我想点击'关注'按钮,直到在网页中找到。
我在代码下方:
@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>
请帮忙。
答案 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
。