gpt4 book ai didi

java - 如何强制 Selenium WebDriver 单击当前不可见的元素?

转载 作者:IT老高 更新时间:2023-10-28 11:29:29 26 4
gpt4 key购买 nike

我正在使用 Selenium 2 Java API 和 FirefoxDriver。当我填写表单时,复选框会根据表单输入添加到页面中。

我想使用 Selenium 模拟对这些复选框的点击。该元素在常规浏览器中可见且可用,但 selenium 断言该元素不可见。

"Element is not currently visible and so may not be interacted with"

我可以强制 selenium 忽略元素的不可见状态吗?如何强制 Selenium 与不可见元素交互?

最佳答案

Selenium 根据以下标准确定元素是否可见(使用 DOM 检查器来确定适用于您的元素的 css,确保查看计算样式):

  • 可见性!=隐藏
  • display != none(也检查每个父元素)
  • opacity != 0(不检查单击元素)
  • 高度和宽度均 > 0
  • 对于输入,属性类型 != hidden

您的元素符合这些条件之一。如果您无法更改元素的样式,那么您可以使用 javascript 强制执行此操作(假设您使用的是 WebDriver,因为您说的是 Selenium2 API):

((JavascriptExecutor)driver).executeScript("arguments[0].checked = true;", inputElement);

但这不会触发 javascript 事件,如果您依赖该输入的更改事件,您也必须触发它(有很多方法可以做到这一点,最简单的是使用该页面上加载的任何 javascript 库) .

可见性检查的来源 -

https://github.com/SeleniumHQ/selenium/blob/master/javascript/atoms/dom.js#L577

定义这个的 WebDriver 规范 -

https://dvcs.w3.org/hg/webdriver/raw-file/tip/webdriver-spec.html#widl-WebElement-isDisplayed-boolean

关于java - 如何强制 Selenium WebDriver 单击当前不可见的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6101461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com