java - 单击 <li> 列表项不使用 Selenium Java

标签 java list selenium

以下列表表示页面导航按钮:

<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>标签。

所以,在这里你应该选择xpathcssSelector定位器。

方法 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/

相关文章:

java - 使用 GSON 解析 JSON,类问题

java - 是否可以从网络服务器获取服务器和语言信息?

swift - 独特的对象数组

Python - 查找列表中所有可能的元素分组

python - 计算 Python 列表中某个模式出现的次数

javascript - 如何使用 selenium 自动化影子 DOM 元素?

java - 配置 IReport 和 Firebird

php - Selenium 与 SimpleTest 与 WatiN

javascript - 在 Selenium Python 中处理警报

java - 动态获取图像到ImageView