如何点击Selenium WebDriver中的隐藏元素?

San*_*h S 18 html java selenium selenium-webdriver

我有一个显示一些记录的网格.当我单击一个记录并检查该元素时,它会显示它被隐藏但在网格中可见.

我的HTML是:

<a href="http://192.168.1.6/eprint_prod_3.8/settings/othercost_add.aspx?type=edit&id=805" title="Plastic Spiral Bind"
<div style="float: left; width: 99%; overflow: hidden; height: 15px; overflow: hidden"> Plastic Spiral Bind </div>
</a>
Run Code Online (Sandbox Code Playgroud)

上面的代码在检查时被隐藏但在网格中可见.

Selenium代码:

driver.findElement(By.partialLinkText("Plastic Spiral Bind")).click();
Run Code Online (Sandbox Code Playgroud)

TDH*_*DHM 28

首先将该元素存储在object中,让我们说element然后编写以下代码来单击该隐藏元素:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);
Run Code Online (Sandbox Code Playgroud)

  • 我不明白为什么Selenium认为我的保存按钮不可见,但你用这个片段保存了(双关语). (2认同)

Rob*_*ham 12

你有两种方法.Selenium专门编写为不允许与隐藏元素交互.理性的是,如果一个人不能执行该行动,那么Selenium也不应该.因此,要通过Selenium执行单击,您必须执行用户要执行的操作以使该按钮可见(例如鼠标悬停在事件上,单击另一个元素等),然后执行一次可见的单击.

但是,Selenium允许您在元素的上下文中执行Javascript,因此您可以编写Javascript来执行click事件,即使它是隐藏的.

我的偏好是始终尝试执行操作以使按钮可见


小智 5

这是 Python 中的脚本。

您无法单击 selenium 中隐藏的元素。但是,您可以执行 JavaScript 来为您单击隐藏的元素。

element = driver.find_element_by_id(buttonID)
driver.execute_script("$(arguments[0]).click();", element)
Run Code Online (Sandbox Code Playgroud)