单击循环,直到找到java

时间:2017-08-08 05:45:28

标签: java selenium selenium-webdriver

我想点击'关注'按钮,直到在网页中找到。

我在代码下方:

@Test
public void testCar() throws Exception 
{
    driver.get("https://-----/login/");
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.findElement(By.id("username")).clear();
    driver.findElement(By.id("username")).sendKeys("user");
    driver.findElement(By.id("password")).clear();
    driver.findElement(By.id("password")).sendKeys("password");
    driver.findElement(By.xpath("//button[@type='submit']")).click();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//span[text()='Followed']")).click();
}

我该怎么做?如果没有找到该元素,则点击下一页&再次找到按钮。

这是下一个按钮HTML:

<span>Next Page</span>

请帮忙。

2 个答案:

答案 0 :(得分:0)

只需使用try catch

进行循环
try {
  while (true)
  {
    driver.findElement(By.xpath("//span[text()='Followed']")).click();
  }
} catch (ElementNotFoundException ex) {
  driver.findElement(By.xpath("//span[text()='Next Page']")).click()
}

如果找到该元素,则会单击该元素,否则将抛出未找到元素的异常,并且该时间可以单击“下一页”按钮

答案 1 :(得分:0)

检查条件天气关注按钮是否可用,因为您必须使用List才能获得跟踪webelements赞:

Boolean buttonNotFound = true;

while(buttonNotFound)
{
    List<WebElement> follow = driver.findElements(By.xpath("//span[text()='Followed']"));       
    if(follow.size()!=0)
    {
            follow.get(0).click();
            buttonNotFound=false;
    }
    else
    {
        driver.findElement(By.xpath("//span[text()='Next Page']")).click();
    }
}

注意:不要一次又一次地写ImplicitWait,如果您在get()正下方的某个地方提到过,那么它适用于整个脚本。如果某个元素需要更多时间进行交互,请使用ExplicitWait