硒发送键不起作用
Posted
技术标签:
【中文标题】硒发送键不起作用【英文标题】: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 的元素。 ***.com/questions/12293158/…:P @user3868055 能否分享一下页面链接或来源 您无需向下滚动网页驱动程序即可访问元素。即使您没有滚动到它,该元素也是“可见的”,只要它实际呈现到 dom 而不是在另一个元素后面。但是,如果您实际上必须滚动到页面的该部分以 -render- 元素:***.com/a/12293212/1994255 【参考方案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')");
【讨论】:
以上是关于硒发送键不起作用的主要内容,如果未能解决你的问题,请参考以下文章