元素隐藏selenium webdriver错误“元素当前不可见,因此可能无法进行交互”

时间:2015-04-03 15:50:21

标签: java selenium webdriver

我正在尝试点击隐藏的搜索按钮。 我尝试了一些方法,但它没有工作:

<form id="form1" name="viewClient" method="post" action="ClientMgmtServlet" abframeid="iframe.0.10752026348407184" abineguid="027BBB6AD3324EFDA3FED3803F068951">
<input type="hidden" value="U7dPiPXFQhCDtDaTHAVH" name="preventionflag"/>
<input id="searchClientBtn" type="hidden" value="Search" name="searchClientBtn"/>

我使用了这种方法:

//Enter client ID
String userid = prop.getProperty(CLIENTID);
driver.findElement(By.id("clientId")).sendKeys(userid);

//Enter client name
String clientName = prop.getProperty(CLIENTNAME);
driver.findElement(By.id("clientName")).sendKeys(clientName);

//enter Mobile No
String mobile_no = prop.getProperty(MOBILE_NO);
driver.findElement(By.id("mobileNo")).sendKeys(mobile_no);
WebElement elem = driver.findElement(By.xpath(".//*[@id='searchClientBtn']"));
String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';";

((JavascriptExecutor) driver).executeScript(js, elem);

点击搜索按钮,但我在字段中输入的数据不接受。它的作用就像我还没有输入数据一样。这向我展示了搜索中的所有用户。

有人可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:1)

您可以查看此内容 - How to click on hidden element in Selenium WebDriver?

如果您可以更改元素,那么使用xpath查找元素也不是一个好主意。

请注意,某些版本的浏览器(我认为 - FF 34.xx.x,35.xx.x)在执行js时遇到了这个奇怪的问题。

答案 1 :(得分:0)

id为searchClientBtn的input-element是一个隐藏字段。您无法在普通浏览器中与其进行交互。由于Selenium正在推动浏览器,它不会让你做一些普通浏览器无法做到的事情。

这是正常行为,您无法更改。

要提交表单,可以在该表单中的任何可见输入字段上调用click()方法。您也可以抓取表单元素并单击()。

答案 2 :(得分:0)

正如@Stefaan Neyts所解释的那样尝试提交表格。填写表格中的所有详细信息后,请尝试以下代码。

driver.findElement(By.id("clientName")).submit();

答案 3 :(得分:0)

我发现了我遇到的问题。我有两个具有相同ID的元素&#34; searchClientBtn&#34;。 所以我使用了driver.findElement(By.xpath("(.//*[@id='searchClientBtn'])[2]")).click(); 让我读到第二个没有隐藏的元素,它解决了我的问题。 谢谢大家。