Java sendKeys()不适用于我的一个输入文件

Java sendKeys()不适用于我的一个输入文件,java,selenium-webdriver,testng,Java,Selenium Webdriver,Testng,我在表单中有两个输入字段,它们的来源如下所述 <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

我在表单中有两个输入字段,它们的来源如下所述

<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="" />

对于第一个字段,在TestNG下运行时没有出现错误,但第二个字段工作正常。为了方便起见,我为两个输入字段都添加了页面源代码。

可能的解决方案1:执行对sendKeys()的javascript调用 如前所述,很可能是文本框的格式不允许您将keys()发送到输入框。原因可能只是WebDriver处理将输入放入框中的方式。我建议尝试javascript执行不同类型的输入填充方法

WebDriver driver = new FirefoxDriver();

JavascriptExecutor executor = (JavascriptExecutor)driver;

executor.executeScript("document.getElementById("SSN").value='55555';);
可能的解决办法2:

我没有一个很好的代码片段可以向您展示如何利用autofill,但是github本身有很好的例子

可能的解决方案3:删除输入标记的格式化属性,然后使用sendKeys()


可能的解决方案1:执行对sendKeys()的javascript调用 如前所述,很可能是文本框的格式不允许您将keys()发送到输入框。原因可能只是WebDriver处理将输入放入框中的方式。我建议尝试javascript执行不同类型的输入填充方法

WebDriver driver = new FirefoxDriver();

JavascriptExecutor executor = (JavascriptExecutor)driver;

executor.executeScript("document.getElementById("SSN").value='55555';);
可能的解决办法2:

我没有一个很好的代码片段可以向您展示如何利用autofill,但是github本身有很好的例子

可能的解决方案3:删除输入标记的格式化属性,然后使用sendKeys()


如果在selenium的文本字段sendKey()上有任何JQuery实现将不起作用,则必须使用以下代码段

JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("document.getElementById('field_id').value = 'field_val';");

如果在selenium的文本字段sendKey()上有任何JQuery实现将不起作用,则必须使用以下代码段

JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("document.getElementById('field_id').value = 'field_val';");


只需删除格式化输入标记的属性。然后您可以使用SendKeys()。

只需删除格式化输入标记的属性即可。然后您可以使用SendKeys()。

请重新阅读您的问题。问题出在哪里还不清楚。您链接的源html不包含id='Zip'的任何元素。第一个字段的id是“SSN”,而不是“Zip”。当您遇到这样的问题时,最好先确认找到了元素,或者检查前面提到的id值。我的错,我现在编辑了,但实际问题是sendKeys()不适用于SSN字段,但适用于其他字段。请重新阅读您的问题。问题出在哪里还不清楚。您链接的源html不包含id='Zip'的任何元素。第一个字段的id是“SSN”,而不是“Zip”。当您遇到这样的问题时,最好先确认找到了元素,或者检查前面提到的id值。我的错,我现在编辑了,但实际的问题是sendKeys()不适用于SSN字段,而适用于另一个字段。如果您可以访问页面的html源代码,可以通过去掉标记的该属性进行测试,只是为了进行实验。另外,我还为您找到了另一种可能的解决方案,因此让我编辑我的答案,以便将其添加到其他内容中。此外,您是否尝试过在webelement上执行任何其他操作,如单击、getAttribute()等?我没有更改html的权限,但我尝试了getAttribute()工作正常我不知道问题出在哪里我不得不假设格式化的文本框就是问题所在。java selenium webdriver的Sendkeys()可能无法工作。我将在回答中使用webdriver抛出javascript调用的代码片段。如果你可以访问页面的html源代码,可以试着去掉标签的属性,只是为了实验。另外,我还为您找到了另一种可能的解决方案,因此让我编辑我的答案,以便将其添加到其他内容中。此外,您是否尝试过在webelement上执行任何其他操作,如单击、getAttribute()等?我没有更改html的权限,但我尝试了getAttribute()工作正常我不知道问题出在哪里我不得不假设格式化的文本框就是问题所在。java selenium webdriver的Sendkeys()可能无法工作。我将在回答中使用webdriver抛出javascript调用的代码片段。看看这是否有效。