如何单击使用 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 元素

如何使用 jQuery 在 Selenium WebDriver 中单击带有 Java 的按钮

如何使用Selenium Webdriver和Java编写定位器来单击img?