【问题标题】:Refresh page selenium刷新页面硒
【发布时间】:2021-06-15 09:47:53
【问题描述】:

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

【问题讨论】:

  • 你使用什么语言?
  • 为什么要刷新标题?
  • 我在 jupyterlab 中使用 python

标签: selenium xpath webdriver refresh


【解决方案1】:
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()

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

【讨论】:

  • 它给我写了这个:文件“”,第 2 行 while(not addtocart): ^ IndentationError: unexpected indent 它指定了 while 的“w”跨度>
  • 查看更新后的答案美化了它,如果ti不起作用,请在将其复制到某个编辑器时正确格式化
  • 更新了最后一行以使用数组中的元素
  • 你只能接受一个更适合你的答案
  • @PDHide :我很欣赏你所说的哪个更适合你。干得好
【解决方案2】:

你可以有一个这样的无限循环:

解释

而 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

【讨论】:

  • 不会退出while循环,
  • @PDHide - 是的,需要休息。 Thnx 我已经修好了
  • 我很高兴它对你有用。如果有帮助请接受,您必须点击投票按钮下方的复选标记
  • Heyyyyy ^^我想知道清除所有cookie的命令是什么^^谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 2011-12-22
  • 2010-10-21
相关资源
最近更新 更多