硒发送键不起作用

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

【讨论】:

以上是关于硒发送键不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从硒导入网络驱动程序不起作用?

.Send 不起作用时如何发送邮件?

为啥我的频道消息发送代码不起作用?

SMTP仅发送正文不起作用Python [重复]

带有 AJAX 加载页面的“发送”按钮不起作用

发送短信权限不起作用