我正在尝试决定使用if
和else
还是try
和exception
来处理NoSuchElementException。
我尝试在下面使用,但不起作用。出现NoSuchElementException错误,并且程序在那里停止,并且不会继续执行else
语句。
if len(driver.find_element(By.XPATH, "//*[@id='order.list_order_list_order_list[1].ref_doc_no']/span"))>0:
driver.find_element(By.XPATH, "//*[@id='order.list_order_list_order_list[1].ref_doc_no']/span").click()
driver.implicitly_wait(10)
driver.find_element(By.XPATH, "//td[7]/a/span").click()
else:
driver.find_element(By.XPATH, "//*[@id='breadcrumb_susBreadCrumb']/a[2]/span").click()
enter_po_search("3020331278")
我在下面使用过,并且可以使用。
try:
driver.find_element(By.XPATH, "//*[@id='order.list_order_list_order_list[1].ref_doc_no']/span").click()
driver.implicitly_wait(10)
driver.find_element(By.XPATH, "//td[7]/a/span").click()
enter_po_search("3020331278")
except NoSuchElementException:
driver.find_element(By.XPATH, "//*[@id='breadcrumb_susBreadCrumb']/a[2]/span").click()
enter_po_search("3020331278")
我这样做正确吗?有没有更好的方法对此进行编码?
答案 0 :(得分:2)
第一个代码段中仍然出现错误的原因是您正在使用find_element
的{{1}}读入
因此替换
find_elements
进入
if len(driver.find_element(By.XPATH, "//*[@id='order.list_order_list_order_list[1].ref_doc_no']/span"))>0:
将起作用。
对于Python的编码风格,在逻辑流程中使用if len(driver.find_elements(By.XPATH, "//*[@id='order.list_order_list_order_list[1].ref_doc_no']/span"))>0:
非常普遍并且可以接受,更多关于here的内容。因此,使用try-except
或使用if-else
都是可以的。