Has*_*san 1 java testng selenium-webdriver
我在表单中有两个输入字段,其来源如下所述
<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="" />
Run Code Online (Sandbox Code Playgroud)
我试图在selenium web驱动程序(Firefox)中使用以下命令发送输入
driver.findElement(By.cssSelector("input[id='SSN']")).sendKeys("55555");
driver.findElement(By.cssSelector("input[id='MiddleName']")).sendKeys("xyz");
Run Code Online (Sandbox Code Playgroud)
对于第一个字段,当我在TestNG下运行时没有出现错误但是第二个字段工作正常我已经为两个输入字段包含了页面源以方便.
可能的解决方案1:执行对sendKeys()的javascript调用正如您所说,很可能是文本框的格式不允许您将sendKeys()发送到输入框.原因可能是WebDriver处理将输入放入框中的方式.我建议尝试使用javascript来执行不同类型的输入填充方法.
WebDriver driver = new FirefoxDriver();
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.getElementById("SSN").value='55555';);
Run Code Online (Sandbox Code Playgroud)
可能的解决方案2:https: //github.com/dsheiko/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");
Run Code Online (Sandbox Code Playgroud)