继续滚动一个部分,直到在Selenium WebDriver中"disabled"父标签属性



我有一个应用程序,它有几个带pics的部分,每个部分都有一个向右滚动的滚动链接

<div class="owl-next">
<i class="fa fa-angle-right">

div类属性变为";owl next disabled";当你不能再滚动的时候。我希望能够滚动到每个部分的最后一张图片。我已经能够想出下面的代码,其中有一个"for"循环来循环div-webelements,但在循环中,我只能在元素未找到之前单击一次,抛出异常,因为没有找到owl-next-disabled。

List<WebElement> divtag=driver.findElements(By.xpath("//div[@class='owl-next']"));
Thread.sleep(1000);
int i=1;
if(divtag!=null)
{
for(WebElement clickright:divtag)
{

WebElement rightscroll=driver.findElement(By.xpath("//div/i[@class='fa fa-angle-right']"));
rightscroll.click();
WebElement ele=driver.findElement(By.xpath("//div/i[@class='owl-next disabled']"))!=null)

}

}   
}

如何滚动到div标记的属性为"owl-next-disabled"?

问题是:

  1. 单击((向右滚动
  2. 你试图找到"猫头鹰下一个被禁用",但因为你需要滚动更多,所以没有

您想要的是检查元素是否存在,如果不存在,请继续单击向右。findElement((必须找到一个元素,否则会引发错误,findElements((会给出一个可能为空的列表。

for(WebElement clickright : divtag)
{   
while(true){        
WebElement rightscroll=driver.findElement(By.xpath("//div/i[@class='fa fa-angle-right']"));
rightscroll.click();
List<WebElement> endList = driver.findElement(By.xpath("//div/i[@class='owl-next disabled']"))!=null);
if(endList.Count() == 0)
break;
}
}

添加一个"安全",必要时点击100次右键后停止

while(true)
{
WebElement parent = clickright.findElement(By.xpath("./.."));
if(parent.getAttribute("class").equalsIgnoreCase("owl-next disabled"))
break;
System.out.println(clickright.getAttribute("class"));       
clickright.click();                         
}

检索到父标记并与禁用的文本进行比较,现在它可以工作了。

最新更新