以下列表代表页面导航按钮:
<div class="list">
<ul class="pageNav">
<li class="paginate_button ">
<a href="#" controls="Tables_Table_0" data-idx="0" tabindex="0">1</a></li>
<li class="paginate_button ">
<a href="#" controls="Tables_Table_0" data-idx="1" tabindex="0">2</a></li>
<li class="paginate_button ">
<a href="#" controls="Tables_Table_0" data-idx="2" tabindex="0">3</a></li>
</ul>
</div>
例如,要转到第二页,我使用的是Selenium Java代码:
//after setting up webdriver
List<WebElement> li = driver.findElements(By.className("pageNav"));
System.out.println(li.get(2).getText());
li.get(2).click();
正确打印文本“2”,但没有正确点击或导航,就像我在实际网站上手动执行一样。我也尝试用以下实际链接替换链接:
<a href="https://www.w3schools.com/html/">Visit our page</a>
但仍然没有运气。我做错了什么?
先谢谢你了!
答案 0 :(得分:1)
尝试以下代码
//getting all the anchor tag elements and storing in a list
List<WebElement> links = driver.findElements(By.xpath("//ul[@class='pageNav']//li[starts-with(@class,'paginate_button')]/a"));
System.out.println(links.size());
//performs click on second links
links.get(1).click();
答案 1 :(得分:1)
请尝试以下任何代码。
在您尝试过的代码中,我注意到您使用class
定位器点击links
元素。但是您的<ul>
标记不包含该链接。在<ul>
标记内,<li>
标记存在,每个<li>
标记包含单独的<a>
标记。
所以,在这里你应该使用xpath
或cssSelector
定位器。
方法1)使用xpath定位器
List<WebElement> links = driver.findElements(By.xpath("//ul[@class='pageNav']/li/a"));
System.out.println(links.size());
links.get(1).click(); //indexing start from 0, if you want to click on second link then pass indexing as 1.
建议:,而不是使用absolute xpath
,请使用relative xpath
。
方法2)使用cssSelector定位器
List<WebElement> links = driver.findElements(By.cssSelector("ul.pageNav>li>a"));
System.out.println(links.size());
links.get(1).click(); //indexing start from 0, if you want to click on second link then pass indexing as 1.
答案 2 :(得分:1)
如果您遇到任何无法直接处理的异常困难,那么您可以先尝试使用操作类移动到该元素,然后单击它如下所示:
WebElement we = driver.findElement(By.cssSelector("div.list > ul.pageNav li:nth-child(2));
Actions action = new Actions(driver);
action.moveToElement(we).click().build().perform();