Java .click()在Selenium webdriver中不一致
我有一个网站,有一个旋转木马与3个按钮为3旋转项目。这方面的html代码如下所示Java .click()在Selenium webdriver中不一致,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我有一个网站,有一个旋转木马与3个按钮为3旋转项目。这方面的html代码如下所示 <ul class="slick-dots" style="display: block;"> <li class="slick-active" aria-hidden="false"> <button type="button" data-role="none" role="button" tabindex="0">1</button> </li> &l
<ul class="slick-dots" style="display: block;">
<li class="slick-active" aria-hidden="false">
<button type="button" data-role="none" role="button" tabindex="0">1</button>
</li>
<li aria-hidden="true">
<button type="button" data-role="none" role="button" tabindex="0">2</button>
</li>
<li aria-hidden="true">
<button type="button" data-role="none" role="button" tabindex="0">3</button>
</li>
</ul>
<ul class="slick-dots" style="display: block;">
<li class="" aria-hidden="true">
<button type="button" data-role="none" role="button" tabindex="0">1</button>
</li>
<li class="slick-active" aria-hidden="false">
<button type="button" data-role="none" role="button" tabindex="0"
style="">2</button>
</li>
<li aria-hidden="true">
<button type="button" data-role="none" role="button" tabindex="0">3</button>
</li>
</ul>
-
1.
-
2.
-
3.
加载站点时,将启用第一个按钮。
单击旋转木马中的第二个按钮,将更改html,如下所示:
<ul class="slick-dots" style="display: block;">
<li class="slick-active" aria-hidden="false">
<button type="button" data-role="none" role="button" tabindex="0">1</button>
</li>
<li aria-hidden="true">
<button type="button" data-role="none" role="button" tabindex="0">2</button>
</li>
<li aria-hidden="true">
<button type="button" data-role="none" role="button" tabindex="0">3</button>
</li>
</ul>
<ul class="slick-dots" style="display: block;">
<li class="" aria-hidden="true">
<button type="button" data-role="none" role="button" tabindex="0">1</button>
</li>
<li class="slick-active" aria-hidden="false">
<button type="button" data-role="none" role="button" tabindex="0"
style="">2</button>
</li>
<li aria-hidden="true">
<button type="button" data-role="none" role="button" tabindex="0">3</button>
</li>
</ul>
-
1.
-
2.
-
3.
我需要单击每个旋转木马按钮并捕获相应的标题。以下是我到目前为止所做的。然而,这并不总是有效的。但是,如果我调试代码,那么所有3个标题都被正确捕获
int CarouselItem=2;
for (int i = 1; i<=CarouselItems.size(); i++) {
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
//*getting the page header heading
WebElement PageHeaderHeading = driver.findElement(By.xpath("//div[1]/main/section/div/div/div/div[" + i + "]/div[2]/div/div/div[2]/h1"));
System.out.println("Page header text of "+i+" now is " + PageHeaderHeading.getText());
//* clicking on the 2nd and 3rd carousel buttons
if(CarouselItem<=CarouselItems.size())
{
WebElement CarouselButtonToClick = driver.findElement(By.xpath("//li[(@aria-hidden='true') and button[contains(text(),'"+CarouselItem+"')]]"));
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
CarouselButtonToClick.click();
CarouselItem = CarouselItem + 1;
}
}
int CarouselItem=2;
for(int i=1;我的意思是,您需要根据“调试时,它可以工作”显式等待页面加载。请检查。@VinceEmigh,非常感谢!显式等待对我很有效:)