【问题标题】:Break Loop After No More Pages Python在没有更多页面 Python 后中断循环
【发布时间】:2019-05-05 14:55:26
【问题描述】:

我正在 Shopify 中对订单进行分页。一旦到达最后一页,我想跳出循环。我用来单击以分页的按钮在最后一页上仍然处于活动状态并且可单击,唯一不同的是它具有“禁用”属性。通常,我会寻找“下一步”按钮,如果不存在,则循环将中断。在这种情况下不知道该怎么办。

这是我知道不起作用的代码。

while True:
    links = [link.get_attribute('href') for link in driver.find_elements_by_xpath("//*[@testid='Item-Content']/div[2]/div/div/span/span/a")]

    try:
        driver.find_element_by_xpath('//*[@id="AppFrameMain"]/div/div/div[2]/div/div[1]/div/div/div[3]/nav/span[2]/button').click()
        time.sleep(5)
    except:
        pass

按钮 HTML

<button type="button" class="p_2bbL9" aria-label="Next" tabindex="0" aria-describedby="TooltipContent304" disabled>
  <span class="p_2-hnq">
    <svg viewbox="0 0 20 20" class="p_v3ASA" focusable="false" aria-hidden="true">
    <path d="M17.707 9.293l-5-5a.999.999 0 1 0-1.414 1.414L14.586 9H3a1 1 0 1 0 0 2h11.586l-3.293 3.293a.999.999 0 1 0 1.414 1.414l5-5a.999.999 0 0 0 0-1.414" fill-rule="evenodd"></path>
    </svg>
  </span>
</button>

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    这是你应该使用的逻辑。

        while True:
        # your logic goes here
        links = [link.get_attribute('href') for link in
               driver.find_elements_by_xpath("//*[@testid='Item-Content']/div[2]/div/div/span/span/a")]
        # exist loop if next button is disabled
        if not(driver.find_element_by_xpath("//button[@aria-label='Next']").is_enabled()):
            break
        else:
            driver.find_element_by_xpath("//button[@aria-label='Next']").click()
    

    【讨论】:

    • 谢谢,很接近。问题是按钮上的类名是动态的。应该只是 ("//button").click() 吗?
    • 更新了答案以使用aria-label,我们可以使用//button,但页面上可能有多个按钮。
    【解决方案2】:

    试试下面的代码。检查长度计数 >0 然后打破其他点击。

     while True:
        if len(driver.find_elements_by_css_selector('button[aria-label="Next"][disabled]'))>0 :
           break
        else:
            driver.find_elements_by_css_selector('button[aria-label="Next"]')[0].click()
    

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 2020-11-29
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      相关资源
      最近更新 更多