元素隐藏的Selemium网络驱动程序错误"element is not currently visible and so may not be interacted"



我正试图点击一个隐藏的搜索按钮。我尝试了几种方法,但没有奏效:

<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);

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

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

您可以检查这个-如何点击Selenium WebDriver中的隐藏元素?

此外,如果可以更改的话,使用xpath查找元素也不是一个好主意

请注意,一些版本的浏览器(我认为-FF34.xx.x,35.xx.x)在执行js时出现了这个奇怪的问题。

id为searchClientBtn的输入元素是一个隐藏字段。您不能在普通浏览器中与它交互。由于Selenium只是驱动浏览器,它不会让你做在普通浏览器中无法做的事情。

这是正常的行为,你不能改变它。

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

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

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

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

相关内容

最新更新