![](/img/trans.png)
[英]Python Selenium loop keeps using the first URL, doesnt quit loop
[英]How to quit while loop conditionally using Selenium and Python
我有一个 while 循环,一切正常,我只想在Marks = driver.find_element_by_xpath("HERE")
我想让它像这样:如果Marks
没有显示然后退出循环
while len(driver.find_elements_by_xpath("xxxxx']")) != 1:
try:
wait.until(EC.visibility_of_element_located((By.XPATH, "xxxxx']")))
List = driver.find_element_by_xpath("yyyyyyy")
List.click()
print('done1')
time.sleep(2)
Marks = driver.find_element_by_xpath("HERE")
edit here
time.sleep(2)
Marks.click()
time.sleep(5)
print('done3')
driver.get("qqqqqqq")
driver.find_element_by_xpath('qqqqqqq').click()
wait.until(EC.visibility_of_element_located((By.XPATH, "qqqqqqq")))
except:
pass
你可以用 try/except 来做。 如果 Marks 不在网页上(Python 无法通过 XPath 找到它),脚本将引发错误。
try:
Marks = driver.find_element_by_xpath("HERE")
except:
quit()
从您的代码块中,不清楚为什么要在except
内pass
。 这意味着您愿意捕捉任何错误,尽管您绝对没有为此做好准备,而且我们也不会对此采取任何措施。
但是,要在Marks
没有出现时退出循环,即导致NoSuchElementException ,您现在可以在except
块中处理它,如下所示:
while len(driver.find_elements_by_xpath("xxxxx']")) != 1:
try:
wait.until(EC.visibility_of_element_located((By.XPATH, "xxxxx']")))
List = driver.find_element_by_xpath("yyyyyyy")
List.click()
print('done1')
time.sleep(2)
Marks = driver.find_element_by_xpath("HERE")
time.sleep(2)
Marks.click()
time.sleep(5)
print('done3')
driver.get("qqqqqqq")
driver.find_element_by_xpath('qqqqqqq').click()
wait.until(EC.visibility_of_element_located((By.XPATH, "qqqqqqq")))
except NoSuchElementException:
break
注意:您必须添加以下导入:
from selenium.common.exceptions import NoSuchElementException
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.