【问题标题】:Python, Selenium: how to refresh page until element is presentPython,Selenium:如何刷新页面直到元素存在
【发布时间】:2021-08-13 16:40:30
【问题描述】:
while True:
    try:
        browser.find_element_by_xpath('//*[@id="layoutPage"]/div[1]/div/div/div[3]/div[4]/div[2]/div/section/div[1]/div/button/div')
        break
    except NoSuchElementException:
        browser.refresh()

为什么我仍然得到selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="layoutPage"]/div[1]/div/div/div[1]/div/div[1]/button[2]"} eroor? 我已经从 selenium.common.exceptions 导入了 NoSuchElementException

【问题讨论】:

标签: python selenium


【解决方案1】:

试试

while True:
    try:
        browser.find_element_by_xpath('//*[@id="layoutPage"]/div[1]/div/div/div[3]/div[4]/div[2]/div/section/div[1]/div/button/div')
        break
    except:
        browser.refresh

或者这个:

while True:
    if(browser.find_elements_by_xpath('//*[@id="layoutPage"]/div[1]/div/div/div[3]/div[4]/div[2]/div/section/div[1]/div/button/div')):
        break
    else:
        browser.refresh

注意,我在第二个代码中使用了find_elements。它返回列表。如果列表非空,则应输入if,否则将进入else并刷新页面

【讨论】:

  • 我更新了代码。应该是browser.refresh,没有()
  • 没有帮助。 selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="layoutPage"]/div[1]/div/div/div[1]/div/div[1]/button[2]"}
  • 有没有其他方法可以刷新页面直到元素出现?
  • 是的,但我的建议也应该有效。所以首先我不明白为什么它不适合你
  • 每次刷新后手动检查您的定位器是否相同。
【解决方案2】:

你可以在刷新后使用time.sleep()命令看看是否有效,

我猜它会是因为它会在刷新后立即分析页面,因此页面没有时间完全加载自己并向您抛出错误,因为它没有得到它正在搜索的所需内容!

希望对你有帮助!!!

while True:
    element = browser.find_elements_by_xpath('//*[@id="layoutPage"]/div[1]/div/div/div[3]/div[4]/div[2]/div/section/div[1]/div/button/div')
    if element != None:
        print("got it !")
        break
    else:
        browser.refresh()
        time.sleep(2)
        continue      

for i in range(1):
    while True:
    element = browser.find_elements_by_xpath('//*[@id="layoutPage"]/div[1]/div/div/div[3]/div[4]/div[2]/div/section/div[1]/div/button/div')
    if element != None:
        print("got it !")
        break
    else:
        browser.refresh()
        time.sleep(2)
        continue 

【讨论】:

  • 很遗憾,没有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2014-09-26
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多