代码之家  ›  专栏  ›  技术社区  ›  Karunagara

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

  •  0
  • Karunagara  · 技术社区  · 7 年前

    我面临的问题是, SendKeys() 未将值传递给正确的字段,即使在中给定了有效的ID Internet Explorer 11 。如果我在 铬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)
    

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

    问题: 值不匹配,即。 地址行1 值传递给 城市 后代码 现场接收 名字 价值观( 仅供参考: 我在剧本中没有提到)

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

    有人能给我这个解决方案吗?

    已编辑: 附加的屏幕截图 enter image description here enter image description here

    谢谢
    卡鲁纳加拉潘迪

    2 回复  |  直到 7 年前
        1
  •  3
  •   Kovacic    7 年前

    这一问题往往会发生。可能是由于驱动程序错误,驱动程序版本错误,而IE实际上是一个灾难性的浏览器。 您可能找到了正确的元素(如果它适用于Chrome),但sendKeys()方法在IE中无法正常工作。如果它有问题,Safari上也会出现此问题。

    尝试以下方法之一,可能会有所帮助:

    对于64位WebDriver: 1、打开IE 2、转到Internet选项高级安全 3、选中启用64位进程以获得增强的保护模式单击 4、应用并确定

    对于32位WebDriver: 1、打开IE 2、转到Internet选项高级安全 3、取消选中增强保护模式的启用64位进程 4、单击应用并确定

    而且:

    Internet选项->安全性->选中所有区域的“启用保护模式” 转到高级->安全性->选中“启用增强保护模式”

    在代码中,请尝试以下操作:

    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';");