我是selenium的新手,并试图使我的工作自动化。我的结果包括下一页的分页。在最后一页"下一页"按钮被禁用,我的代码不应该访问该特定元素。
List<WebElement> pagesize = driver.findElements(By.xpath("html/body/div[1]/div[3]/div[3]/div/span"));
while(true) {
for(int i=5; i<=pagesize.size(); i++) {
WebElement Analystelem = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[3]/div["+i+"]/span"));
List<WebElement> pagesize = driver.findElements(By.xpath("html/body/div[1]/div[3]/div[3]/div/span"));
System.out.println(pagesize.size());
while(true) {
for(int i=5;i<=pagesize.size();i++) {
WebElement Analystelem = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[3]/div["+i+"]/span"));
if(elementpage.isEnabled()) {
elementpage.click();
}
else {
System.exit(1);
}
注意:旧搜索是此处的下一个按钮。 在结果的最后一页我得到一个例外
"Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"html/body/div[1]/div[3]/div[3]/div[10]/span"}"
答案 0 :(得分:0)
首先,我怀疑你是否搜索了一个范围,并将其参考文献存储在&#39; Analystelem&#39;但是您在&#39; elementpage&#39;。
上调用了点击操作如果您提供的代码比下面给出的代码工作正常。当Selenium找到元素并试图点击它时;它会抛出异常,处理你觉得最好的异常,但不会破坏你的执行。
只需将您的代码放入Try Catch块,如下所示:
while(true)
{
for(int i=5;i<=pagesize.size();i++)
{
WebElement Analystelem=driver.findElement(By.xpath("html/body/div[1]/div[3]/div[3]/div["+i+"]/span"));
if(elementpage.isEnabled())
{
Try
{
elementpage.click();
}
Catch (Exception ex)
{
//Do whatever you want to do here
}
}
else
{
System.exit(1);
}
}
}
此外,您无需检查天气是否启用了元素。让try catch做它的工作。更合适的代码:
while(true)
{
for(int i=5;i<=pagesize.size();i++)
{
WebElement Analystelem=driver.findElement(By.xpath("html/body/div[1]/div[3]/div[3]/div["+i+"]/span"));
Try
{
elementpage.click();
}
Catch (Exception ex)
{
System.exit(1);
//Do whatever you want to do here
}
}
}