首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何强制Selenium WebDriver点击当前不可见的元素?

如何强制Selenium WebDriver点击当前不可见的元素?
EN

Stack Overflow用户
提问于 2011-05-24 02:44:00
回答 9查看 211.9K关注 0票数 101

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

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

代码语言:javascript
复制
"Element is not currently visible and so may not be interacted with"

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

EN

回答 9

Stack Overflow用户

发布于 2012-04-23 13:33:17

有时,这意味着页面上有多个元素具有您试图搜索的相同属性,而您正在“与错误的元素交谈”。

如果您的元素不能由:id或:name (或:class)唯一标识,这可能很棘手。

有时,通过:xpath搜索元素会有所帮助,但在某些情况下,即使这样做也是不现实的。

在这些情况下,您可能必须获取符合条件的所有元素,并通过索引引用正确的元素。它很脏,但很管用。

我使用的是Ruby on Rails应用程序中的Selenium / Watir,因此在我的示例中,示例如下:

代码语言:javascript
复制
browser = Watir::Browser.new(:firefox, :profile => "default")       
browser.goto("http://www.google.com/analytics")
# login
browser.divs(:text, "+ New Property").last.click

希望这能有所帮助。

票数 27
EN

Stack Overflow用户

发布于 2015-01-10 06:05:11

我也遇到过类似的问题,但它与元素在视口中不可见有关。我抓取了一个屏幕截图,发现浏览器窗口太窄,元素看不见。我做了其中的一个,它起作用了:

代码语言:javascript
复制
driver.maximize_window()

请参阅:WebDriver.maximize_window()

票数 14
EN

Stack Overflow用户

发布于 2015-08-12 16:53:37

或者,您可以使用Selenium Action Class来模拟用户交互--例如

代码语言:javascript
复制
    WebDriver = new FirefoxDriver();

    WebElement menu = driver.findElement(By.xpath("")); // the triger event element

    Actions build = new Actions(driver); // heare you state ActionBuider
    build.moveToElement(menu).build().perform(); // Here you perform hover mouse over the needed elemnt to triger the visibility of the hidden
    WebElement m2m= driver.findElement(By.xpath(""));//the previous non visible element
    m2m.click();
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6101461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档