【问题标题】:Selenium Webdriver sendkeys does not trigger onchange event in IE9.0Selenium Webdriver sendkeys 在 IE9.0 中不会触发 onchange 事件
【发布时间】:2013-07-24 12:28:46
【问题描述】:

我正在使用 Java 为在 ExtJs 中构建的应用程序编写 Selenium 测试脚本。我在附加到“onchange”事件的页面之一中有一个输入字段。每当用户修改字段中的文本时,都会触发 onchange 事件。我正在使用 WebDriver sendKeys() 来修改字段中的文本。因此,无论何时修改文本,在 Firefox 和 Chrome 中都会触发“onchange”事件(如预期的那样),但在 IE9.0 中不会触发。我已经在网上搜索了解决方案,但没有找到。那么请有人可以帮助我吗?让我知道需要更多信息

【问题讨论】:

    标签: internet-explorer selenium webdriver


    【解决方案1】:

    您可以单击该字段上的不同元素,或者更简单的方法是在输入完成后从该字段上跳出。

    在我自动化的 ExtJS 应用程序中,我总是在执行输入后关闭该字段,这会触发所有正确的事件。

    以C#为例:

    IWebElement element = driver.FindElement(By.Id("some_input_field"));
    element.SendKeys("test input")
    element.SendKeys(Keys.Tab);
    

    【讨论】:

    • 感谢 PocketDews .. 我尝试在输入后单击其他元素,但它不起作用。我还没有尝试关闭标签,我今天会尝试并告诉你。
    【解决方案2】:

    我相信这是因为 IE 仅在 onblur 之后才触发 onchange。这意味着您将需要强制输入字段失去焦点。最简单的方法是单击另一个元素。

    【讨论】:

    • 感谢 joostschouten。我已经尝试过这种方法。这适用于“onblur”事件,但不适用于“onchange”事件。我只在 IE 浏览器上看到这个问题。
    【解决方案3】:

    我已经解决了这个问题。 'onchange' 事件仅在某些情况下才会触发。如果输入文本与文本字段中已经存在的文本相同,则不会通过 sendKey() 触发 onchange 事件。但同样的代码在 FF 和 Chrome 浏览器上运行良好。我只是确保在为浏览器及其工作的文本字段中设置新文本之前清除并添加空格。谢谢大家的回复!

    【讨论】:

      猜你喜欢
      • 2019-09-03
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      相关资源
      最近更新 更多