首页 > 解决方案 > 如何使用 selenium 迭代网站搜索结果?

问题描述

我正在尝试遍历此网站上的搜索结果页面。这是他们为分页部分提供的 HTML 代码片段: 分页 HTML:

我想用来转到下一页的链接:

<a href="/Catalogue/search?Query=mask%20respirator&amp;QueryType=All&amp;HideMaskedProducts=False&amp;WasCorrected=False&amp;Page=2&amp;PageSize=10&amp;TotalRecordCount=1537&amp;SortDescending=False&amp;CoreListRequest=BrowseAll">Next &gt;&gt;</a>

我试图做:

next_page_link = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//a[@href='/Catalogue/search?Query=face%20mask&QueryType=All&HideMaskedProducts=False&WasCorrected=False&Page=2&PageSize=10&TotalRecordCount=932&SortDescending=False&CoreListRequest=BrowseAll'")))      
next_page_link.click()

但它似乎不起作用。当我打印出 next_page_link 时,它确实返回了一个元素,所以我认为代码本身可以。链接有问题吗?我可以按照我尝试的方式使用它,还是有任何其他方式可以迭代结果页面?谢谢!

标签: javascriptpythonhtmlseleniumselenium-webdriver

解决方案


您的 XPATH 可能会导致这里出现问题,因此单击不会转到正确的元素。

尝试这样的事情

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//a/text()[contains(.,"Next")]/parent::*'))).click()

如果要将其分配给变量并调用单击,您也可以这样做:

next_page_link = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//a/text()[contains(.,"Next")]/parent::*')))

next_page_link.click()

推荐阅读