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

时间:2014-03-01 04:50:59

标签: java html 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>

以上代码在检查时隐藏,但在网格中可见。

Selenium代码:

driver.findElement(By.partialLinkText("Plastic Spiral Bind")).click();

7 个答案:

答案 0 :(得分:25)

首先将该元素存储在object中,假设为element,然后编写以下代码以单击该隐藏元素:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);

答案 1 :(得分:12)

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

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

我的首选是尝试执行操作以使按钮可见

答案 2 :(得分:1)

我是用jQuery做的:

class Node: Codable {
    // Nothing in here
}

答案 3 :(得分:0)

如果<div>有ID或名称,那么您可以使用find_element_by_idfind_element_by_name

您也可以尝试使用类名,css和xpath

find_element_by_class_name
find_element_by_css_selector
find_element_by_xpath

答案 4 :(得分:0)

overflow:hidden 

并不总是意味着元素在DOM中隐藏或不存在,这意味着正在修剪不适合元素的溢出字符。基本上它意味着即使它应该显示也不显示滚动条,所以在你的情况下链接文本

  

塑料螺旋装订

可能会显示为&#34; Plastic Spir ......&#34;或类似的。所以有可能,这个linkText确实不存在。

所以你可以试试:

driver.findElement(By.partialLinkText("Plastic ")).click();

或xpath:

//a[contains(@title, \"Plastic Spiral Bind\")]

答案 5 :(得分:0)

这是Python中的脚本。

您不能单击硒中隐藏的元素。但是,您可以执行JavaScript来为您单击隐藏的元素。

element = driver.find_element_by_id(buttonID)
driver.execute_script("$(arguments[0]).click();", element)

答案 6 :(得分:-3)

使用Selenium IDE单击元素

,使用链接的XPath
driver.findelement(By.xpath("//a[contains(@title, \"Plastic Spiral Bind\")]")).click();