我有一个显示一些记录的网格。当我单击一个记录并检查该元素时,它会显示它被隐藏但在网格中可见。
我的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();
答案 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_id
或find_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单击元素
,使用链接的XPathdriver.findelement(By.xpath("//a[contains(@title, \"Plastic Spiral Bind\")]")).click();