如何单击使用 Selenium WebDriver 隐藏的元素?
Posted
技术标签:
【中文标题】如何单击使用 Selenium WebDriver 隐藏的元素?【英文标题】:How do you click on an element which is hidden using Selenium WebDriver? 【发布时间】:2013-07-01 03:38:47 【问题描述】:我有一个使用 WebDriver 和 Python
自动化的 Web 应用程序。
问题是有一个类似这样的菜单 如果我手动单击箭头按钮,它会展开到另一个子菜单,我需要从中选择特定字段。
我可以找到第三个菜单,但是当我使用 element.click()
单击它而不是展开菜单并向我显示其子菜单项时,它正在显示所有子菜单的合并内容。
(手动展开子菜单是通过实际点击组名前的小箭头图标来实现的) 那么我如何实际单击此箭头图标以将其中一个组菜单展开为子菜单。
如果有帮助,这是对应于第三组菜单的html
。
<div id="node_3_item" class="treeLabelSelected" style="padding-left: 0px; background-position: 0px -24px;">
<span style="background-position: 0px -24px;">XXX Groups</span>
</div>
<div style="display: none;"></div>
</div>
display: none
行实际上隐藏了子菜单(据我所知)
任何关于如何处理的建议将不胜感激。 谢谢
注意:我已经回答了几个与隐藏 Web 元素交互相关的 SO 问题,但它们与我的情况不同。
【问题讨论】:
【参考方案1】:你可以使用 javascriptExecutor
例如。 - document.getElementsByClassName('post-tag')[0].click();
通过 JavaScriptExecutor 发出那个 JS
(JavascriptExecutor(webdriver)).executeScript("document.getElementsByClassName('post-tag')[0].click();");
【讨论】:
能否请您详细说明一下。 我也不明白。我们可以看到一个真实世界的文本示例吗?我正在做ptor.driver.executeScript("document.getElementsByClassName('logout')[0].click();");
,它会抛出UnknownError: "errorMessage":"'undefined' is not a function (evaluating 'document.getElementsByClassName('logout')[0].click()')"
【参考方案2】:
如果您的应用程序使用jQuery
,您可以使用它来指定一个目标元素,这将简化您的工作。例如
$('.targetClass')
【讨论】:
【参考方案3】:抓住你要点击的元素:
# Or using xparth or something
element = driver.find_element_by_css_selector(css_selector)
使用javascript点击它:
driver.execute_script("$(arguments[0]).click();", element)
注意:我使用的是 jQuery,否则使用 javascript 选择它本机
【讨论】:
我不得不使用 driver.execute_script("arguments[0].click();", element)以上是关于如何单击使用 Selenium WebDriver 隐藏的元素?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 webdriver selenium 从标签中单击按钮
如何在 Java 中使用 Selenium WebDriver 单击按钮?
如何使用 JavaScript 单击 Selenium WebDriver 中的元素?
如何通过 Java 使用 XPath 和 Selenium WebDriver 单击 SVG 元素