【问题标题】:Element search in selenium in a loop循环中硒中的元素搜索
【发布时间】:2021-07-24 16:45:29
【问题描述】:

我正在尝试从该网站检索数据:https://my.supplychain.nhs.uk/Catalogue/search?LastCartId=&LastFavouriteId=&Query=surgical+mask。要查找页面上的所有掩码,我正在循环中为每个搜索页面执行此操作:

search_result = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "search_results"))      
        )
masks_result_list = search_result.find_elements_by_class_name("product_listing ")

它适用于搜索的第一页,但是,当我转到下一页搜索时,它返回 masks_result_list 为空。我还注意到 search_result: <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="0249d71e-6f51-6147-8305-d2a2b738c29f", element="05367ec5-99fb-a14d-b039-214b128ed73b")> 是每个页面的相同元素。我不精通 selenium,所以我不知道下一步该怎么做才能从所有页面中检索数据。是我的代码有问题还是我误解了网站的结构?

【问题讨论】:

  • 我的回答解决了你的问题吗?

标签: javascript html selenium


【解决方案1】:

您没有提供完整的代码,但我猜您正在等待

search_result = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "search_results"))      
        )

在按下next 按钮后立即转到下一个结果页面,因此上一页的search_results 元素仍然存在或类似的东西。
我建议您使用 EC.invisibility_of_element_located 方法等待上一个(当前)页面上的一个产品消失,然后再

search_result = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "search_results"))      
        )

然后去

masks_result_list = search_result.find_elements_by_class_name("product_listing ")

对于新页面上的产品。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 2017-09-12
    • 2018-02-19
    • 2021-12-18
    • 1970-01-01
    • 2011-01-23
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多