单击<;李>;列表项未使用Selenium Java

单击<;李>;列表项未使用Selenium Java,java,list,selenium,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 hr

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

<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();
//设置webdriver后
List li=driver.findElements(按.className(“pageNav”);
System.out.println(li.get(2.getText());
li.get(2).单击();
它正确地打印了文本“2”,但没有正确地点击或导航,就像我在实际的网站上手动操作一样。我还尝试将链接替换为实际链接,如:

但还是没有运气。我做错了什么

提前谢谢你

试试下面的代码

    //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();
//获取所有锚标记元素并存储在列表中
List links=driver.findElements(By.xpath(//ul[@class='pageNav']//li[以(@class,'paginate_按钮')]/a开头);
System.out.println(links.size());
//单击第二个链接
links.get(1).单击();

试试下面的代码

在您尝试过的代码中,我注意到您正在使用
class
locator来单击
链接
元素。但是您的
标记不包含链接。在
标签内,有
  • 标签,每个
  • 标签包含单独的
    标签

    因此,这里应该使用
    xpath
    cssSelector
    locator

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

    如果您面临任何无法直接处理的异常困难,则可以首先尝试使用actions类移动到该元素,然后按如下所示单击它:

     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();
    
    您正在单击“
  • ”元素,但应该单击它的“”子元素。