SendKeys 不填充 Internet Explorer 中各个组件中的值,但它在 Chrome 中填充

SendKeys not populating the values in respective components in Internet Explorer but it does in Chrome

我遇到这样的问题,SendKeys() 即使在 Internet Explorer 11[=] 中给出有效 ID,也没有将值传递到正确的字段43=]。如果我在 Chrome 66+ 浏览器中 运行 相同的脚本,它会按预期工作。为什么?

脚本:

// Address Line1
driver.findElement(By.id("accountForm:accountTabSet:0:paCustForm_main_address1_text")).clear();
driver.findElement(By.id("accountForm:accountTabSet:0:paCustForm_main_address1_text")).sendKeys(ADDRESS1);
Thread.sleep(1000)

// City
driver.findElement(By.id("accountForm:accountTabSet:0:paCustForm_main_city_text")).clear()
driver.findElement(By.id("accountForm:accountTabSet:0:paCustForm_main_city_text")).sendKeys(CITY_NAME)
Thread.sleep(1000)

// State
driver.findElement(By.id("accountForm:accountTabSet:0:paCustForm_main_state_text")).clear()
driver.findElement(By.id("accountForm:accountTabSet:0:paCustForm_main_state_text")).sendKeys(STATE_CODE)
Thread.sleep(1000)

// Postal code
driver.findElement(By.id("accountForm:accountTabSet:0:paCustForm_main_postalCode_text")).clear()
driver.findElement(By.id("accountForm:accountTabSet:0:paCustForm_main_postalCode_text")).sendKeys(POSTAL_CODE)
Thread.sleep(1000)

上述脚本取自更新屏幕。所以我正在清除现有内容并将值传递给各个字段。

问题: 值不匹配,即 AddressLine1 值传递给 CityPostalCode 字段接收 FirstName 值(仅供参考: 我没有在脚本中提到)

Chrome 浏览器 中执行相同的脚本时,它工作正常。为什么?

有人请给我解决方案吗?

已编辑: 附上截图

谢谢
Ka运行agara Pandi

这个问题很容易发生。可能是因为错误的驱动程序,错误的驱动程序版本,以及 IE 实际上是浏览器的灾难。 您可能正确地找到了元素(如果它适用于 Chrome)但是 sendKeys() 方法对于 IE 无法正常工作它有问题,这个问题也发生在 Safari 上。

试一试,可能会有帮助:

对于 64 位 WebDriver: 1.打开IE 2. 转到 Internet 选项 → 高级 → 安全 3.勾选为增强保护模式启用64位进程 点击 4.申请并确定

对于 32 位 WebDriver: 1.打开IE 2. 转到 Internet 选项 → 高级 → 安全 3. 取消选中 ☐ 为增强型保护模式启用 64 位进程 4. 点击应用和确定

还有:

Internet 选项 -> 安全 -> 检查所有区域 "Enable Protected Mode" 转到高级 -> 安全 -> 检查 "Enable Enhanced Protected Mode"

在代码中试试这个:

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
...
capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);

试试这个,但对我来说这只适用于几个版本的 IE:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('ID').value='VALUE';");

我在 Windows 10 64 位 OS.

上有 IE11 32 位浏览器和 32 位 IE 驱动程序服务器

我可以使用 sendkeys 在编辑字段中输入文本,但之后它会被删除。

//WebElement depart=webControls.getDriver().findElement(By.id("oneWayFlight_fromLocation")); //((JavascriptExecutor) webControls.getDriver()).executeScript("document.getElementById('oneWayFlight_fromLocation').value='JFK'"); //((JavascriptExecutor) webControls.getDriver()).executeScript("arguments[0].value='JFK';",depart); ((JavascriptExecutor) webControls.getDriver()).executeScript(String.format("document.getElementById('oneWayFlight_fromLocation').value='JFK';","JFK"));

输入 JFK 但随后删除: