刷新页面硒

Refresh page selenium

嘿 ^^ 我正在编写一个 selenium 程序,但我被困在一个地方。该程序旨在为我儿子的生日在法国网站上购买 1 张显卡。好了,我已经对所有内容进行了编码,但现在我担心的是该显卡的网页仅在有货时可用,因此程序无法通过 xpath“添加到购物车”找到按钮。于是就有了做一个循环的想法,这样只要“加入购物车”按钮不可用,程序就把显卡的页面打开到无穷大(像这样有可用时出现按钮,剩下的已经完成了)。但是,我不知道如何实现这个条件,这个循环,你能帮我吗? 我在使用 webdriver

的 selenium
addtocart = driver.find_elements_by_xpath('somexpath')
while (not addtocart):
    time.sleep(10)  # wait for 10 seconds
    driver.refresh()
    addtocart = driver.find_elements_by_xpath('somexpath')  # refind to avoid stale element exception
addtocart[0].click()

只需使用查找元素并检查返回的数组长度是否为零

你可以像这样无限循环:

解释 :

虽然 True 基本上是一个无限循环,因为我们试图找到

在此处添加到购物车 xpath 带有 xpath 的按钮并使用 find_elements 这样,如果找到它,那么显然尺寸将大于 0,然后继续并单击它但如果没有,则转到 else 块并等待 60 秒(您可以在这里有任何时间),然后刷新页面并重新执行。

while True:
    try:
        if len(driver.find_elements(By.XPATH, "Add to cart  xpath here")) > 0:
            driver.find_element(By.XPATH, "Add to cart  xpath here").click()
            break
        else:
            sleep(60)
            driver.refresh()
    except:
        pass