我在表单中有两个输入字段,它们的来源如下所示
<input class="col8 last right i-f ssn" data-val="true" data-val-regex="Please enter valid SSN number" data-val-regex-pattern="^((\d{3}-\d{2}-\d{4}|X{3}-X{2}-X{4}))$" id="SSN" name="SSN" type="text" value="" />
<input class="col8 last right i-f" id="MiddleName" maxlength="15" name="MiddleName" onkeypress="return isAlphabetKey(event)" type="text" value="" />
我正在尝试使用selenium web driver (Firefox)中的以下命令发送输入
driver.findElement(By.cssSelector("input[id='SSN']")).sendKeys("55555");
driver.findElement(By.cssSelector("input[id='MiddleName']")).sendKeys("xyz");
对于第一个字段,我在TestNG下运行时没有出现错误,但是第二个字段工作正常,为了方便起见,我已经包含了两个输入字段的页面源代码。
发布于 2015-06-12 04:48:41
可能的解决方案1:执行对sendKeys()的javascript调用正如您所说的,很可能是文本框的格式不允许您对输入框执行sendKeys()。原因可能只是WebDriver处理将输入放入框中的方式。我建议尝试使用javascript来执行不同类型的输入填充方法。
WebDriver driver = new FirefoxDriver();
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.getElementById("SSN").value='55555';);
可能的解决方案2:https://github.com/dsheiko/autofill
我没有一个很好的代码片段可以展示给你使用autofill,但是github本身有非常好的例子。
可能的解决方案3:删除输入标记的格式化属性,然后使用sendKeys()
((JavascriptExecutor) driver).executeScript("document.getElementsByID('SSN'[0].removeAttribute('data-val-regex-pattern');");
WebElement input= driver.findElement(By.id("SSN"));
input.clear();
input.sendKeys("55555");
发布于 2015-06-12 22:59:24
如果在文本字段上有任何JQuery实现,则selenium的sendKey()将不起作用,您必须使用以下代码片段
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.getElementById('field_id').value = 'field_val';");
发布于 2015-06-13 00:18:31
只需删除格式化输入标记的属性。然后,您可以只使用SendKeys()。
https://stackoverflow.com/questions/30785881
复制相似问题