Python,Selenium:如何刷新页面直到元素存在
Posted
技术标签:
【中文标题】Python,Selenium:如何刷新页面直到元素存在【英文标题】:Python, Selenium: how to refresh page until element is present 【发布时间】: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。
【问题讨论】:
已经得到答复。 ***.com/questions/10245641/… @saty035 不,它不回答这个问题 可以分享一下url或者html吗? ozon.ru/cart HTML:dropmefiles.com/1NljW 【参考方案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
【讨论】:
很遗憾,没有帮助。以上是关于Python,Selenium:如何刷新页面直到元素存在的主要内容,如果未能解决你的问题,请参考以下文章
Python Selenium,被动等待,直到满足某些页面条件,然后接管[重复]
如何使用 selenium webdriver 进行强制页面刷新?