以下列表表示页面导航按钮:
<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>
但仍然没有运气。我做错了什么?
先谢谢你!
最佳答案
尝试以下任何代码。
在您尝试过的代码中,我注意到您使用的是 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.
关于java - 单击 <li> 列表项不使用 Selenium Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43268554/