Java 遍历表&;单击Using Selenium中的链接

Java 遍历表&;单击Using Selenium中的链接,java,selenium,selenium-webdriver,web-scraping,selenium-chromedriver,Java,Selenium,Selenium Webdriver,Web Scraping,Selenium Chromedriver,我试图在Java中使用Selenium遍历一个表(目前使用的是chromedriver)。该表的内容由不同的人组成,他们的个人资料有链接,对于该表中的每个人,我将进入他们的个人资料并提取一些信息。我将为X数量的人做这件事。该表每页包含5个人,我通过单击分页按钮“>”来浏览页面。有关表的结构的外观,请参见 现在讨论问题:例如,我现在在exampleUrl.com/page_,其中包含一个表,然后输入一个用户的个人资料并提取他们的信息,他们的URL类似于exampleUrl.com/user_x。然

我试图在Java中使用Selenium遍历一个表(目前使用的是chromedriver)。该表的内容由不同的人组成,他们的个人资料有链接,对于该表中的每个人,我将进入他们的个人资料并提取一些信息。我将为X数量的人做这件事。该表每页包含5个人,我通过单击分页按钮“>”来浏览页面。有关表的结构的外观,请参见

现在讨论问题:例如,我现在在exampleUrl.com/page_,其中包含一个表,然后输入一个用户的个人资料并提取他们的信息,他们的URL类似于exampleUrl.com/user_x。然后我使用

driver.navigate().back();
返回表格页面(exampleUrl.com/page\u包含表格)

问题是,当我遍历表时,URL不会改变。因此,每当我从exampleUrl.com/user_x返回包含表的exampleUrl.com/page_x时,我总是在表的第一页结束

当我只需要从表中的第一页获取用户信息时,这很好,但是如果我需要浏览25页呢?如果我在第11页,那么我将能够在第11页检索一个用户的信息,然后我将导航回第1页,然后我将不得不再次分页到第11页,以便能够提取更多用户的信息

我的尝试:

  • 我试图对所有页面进行分页,以检索所有用户的链接,然后单击它们,但很明显,我收到了
    StaleElementReferenceException
    ,因为该链接当前在页面上不可见

  • 我还认为可能有一种方法可以在我对表进行分页时复制驱动程序,然后切换到特定的驱动程序,但这也失败了

  • 通过谷歌我找不到任何其他关于这个的问题,所以我有点不知所措。有没有办法保存状态,这样我就不必每次都回到第一页


    提前感谢:)

    我可以想出几种方法来做到这一点:

  • 首先刮取整个表,收集每个用户的配置文件页面的URL并将它们存储在一个数组中。完成整个表的抓取后,循环遍历数组并导航到每个URL并从中抓取所需内容。我认为这是最好最快的选择

  • 另一种可能是URL包含您所在表的页面。例如,如果您在表的第5页,URL将包含类似于
    ?page=5
    的内容。我假设情况并非如此,因为后退按钮正在完全重新开始

  • 另一种变体可能是页面上有一个页面计数器,例如<1 234 5>(其中3为粗体或未格式化,等等)指示您所在的页面。在离开页面之前,您可以获取该信息,然后返回表并单击与该特定页面关联的链接


  • 在没有看到网站/页面的情况下,我不能肯定2或3是可行的选择。这些都是根据我在其他网站上看到的猜测。

    谢谢!这非常有效,我不知道为什么我一开始就没有考虑它。。。我最终选择了选项1。选项#2不起作用,因为URL不包含表的页面,并且正如您所提到的,后退按钮导致它完全重新开始。选项#3也不起作用,因为分页按钮仅为“”。