【问题标题】:selenium sendkeys doesn't function硒发送键不起作用
【发布时间】:2015-09-23 10:43:03
【问题描述】:

早上好, 我在 java 中使用带有 SELENIUM 库的命令 sendKeys 时遇到问题。

有问题的文本字段只有在您向下滚动查看时才在窗口中可见。

var element = driver.FindElement(By.Xpath("…"));
element.SendKeys("blah");

因此,当文本字段在窗口中可见时,消息“blah”会毫无问题地发送到文本字段元素。

相反,当文本字段元素在窗口中不可见时,因为我没有向下滚动它,消息“blah”不会发送到文本字段。

我该如何解决这个问题? 当它没有出现在窗口中时,我也想将消息“blah”发送到文本字段元素。 我该怎么做?

【问题讨论】:

  • 您也可以向下滚动到带有 selenium 的元素。 stackoverflow.com/questions/12293158/…:P
  • @user3868055 能否分享一下页面链接或来源
  • 您无需向下滚动网页驱动程序即可访问元素。即使您没有滚动到它,该元素也是“可见的”,只要它实际呈现到 dom 而不是在另一个元素后面。但是,如果您实际上必须滚动到页面的该部分以 -render- 元素:stackoverflow.com/a/12293212/1994255

标签: javascript java selenium selenium-webdriver textfield


【解决方案1】:

使用 executeScript 将元素滚动到视图中。

driver.executeScript("arguments[0].scrollIntoView();",element);
element.sendKeys("blah");

【讨论】:

    【解决方案2】:

    你可以使用Actions moveToElement方法来做这些事情

    公共动作 moveToElement(WebElement toElement)

    移动鼠标 到元素的中间。元素滚动到视图中并 它的位置是使用 getBoundingClientRect 计算出来的。

    new Actions(driver).moveToElement(element).build().perform();
    element.SendKeys("blah");
    

    【讨论】:

      【解决方案3】:

      如果您无法使用标准的 SendKeys 方法设置文本,您可以尝试 ExecuteScript(如果问题确实在 SendKeys 而不是您的选择器 =))。喜欢:

      webdriver.executeScript("document.getElementById('elementID').setAttribute('value', 'new value for element')");
      

      【讨论】:

        猜你喜欢
        • 2015-05-25
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-02
        • 2017-11-14
        • 1970-01-01
        相关资源
        最近更新 更多