运行测试时Xpath无法正常工作

时间:2016-07-13 14:32:16

标签: selenium

我正在尝试自动化浏览器,当我尝试通过浏览器中的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">

2 个答案:

答案 0 :(得分:0)

如果您尝试选择selectjobaction,请尝试以下操作:

使用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时遇到新问题,请返回并发布新问题,我们可以尝试为您提供帮助。