我正在尝试自动化浏览器,当我尝试通过浏览器中的xpath在静态模式下找到元素时,它能够突出显示元素,当我运行脚本时,它返回时出现错误,它无法找到元素。
xpath我写道:
driver.findElement(By.xpath("//input[@value='soa_b_pbtv_l0_trnkni']/following-sibling::td[1]/child::select[@name='jobaction']")));
这是HTML:
<form name="f2" onsubmit="return verify();" action="/ATS/cgi-bin/barcap_jobaction.pl" method="post">
<>
<input name="jobname" type="hidden" value="soa_b_pbtv_l0_trnkni"/>
<input name="jobinstance" type="hidden" value="D03"/>
<input name="jobproceed" type="hidden" value="web"/>
<td style="background-color: #ffffff;">
<select name="jobaction">
答案 0 :(得分:0)
如果您尝试选择select
,jobaction
,请尝试以下操作:
使用css选择器选择select[name='jobaction']
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("form[name='f2']")));
List<WebElement> eleList = driver.findElements(By.cssSelector("form[name='f2']")));
for(WebElement element: eleList) {
if(element.findElement(By.cssSelector("input[name='jobname']")).getText().equalsIgnoringCase("expectedValue")) {
WebElement element = element.findElement(By.cssSelector("select[name='jobaction']"));
}
}
答案 1 :(得分:0)
隐藏了INPUT
,因此无法使用典型的Selenium方法找到它。 Selenium旨在仅与用户可以看到和交互的元素进行交互。您可以在浏览器中找到它,因为您使用的是JS或JQuery,并且它们不是为忽略隐藏元素而设计的。解决这个问题的一种方法是使用JavascriptExecutor
...它基本上允许你在Selenium中运行JS并找到隐藏的元素。既然听起来你已经有了成功的定位器,我建议你查阅一些关于JSE的教程,你应该设置好。
如果您在使用JSE时遇到新问题,请返回并发布新问题,我们可以尝试为您提供帮助。