如果搜索没有结果则继续执行脚本 selenium python
Continue script if search has no results selenium python
我根据列表 RegistrationNr 中的注册号自动导出了一些报告。
逻辑是这样的:
步骤 1) 在搜索框中输入注册号(否则将找不到 html 代码)
第2步)点击注册号
步骤 3) 去导出这个组织的报告。
使用我当前的代码,如果列表中有一个不在数据库中的数字,程序就会停止,因为它没有可以点击的数字。每当发生这种情况时,如何让它查找列表中的下一项?
这是我的代码:
for i in RegistrationNr:
driver.find_element(By.XPATH, './/*[@title = "Searchbox"]').send_keys(i)
driver.find_element(By.XPATH, ".//*[@title =" + ' "'+ i +'"' + "]").click()
driver.find_element(By.XPATH, './/*[@title = "Number"]').click()
谢谢!
您可以使用 find_elements
方法简单地验证元素的存在。
如果找到元素,它将 return 一个非空列表,Python 将其视为布尔值 True
。否则它将 return 一个空列表,Python 将其视为布尔值 False
。
所以你的代码可以是这样的:
for i in RegistrationNr:
driver.find_element(By.XPATH, './/*[@title = "Searchbox"]').send_keys(i)
driver.find_element(By.XPATH, ".//*[@title =" + ' "'+ i +'"' + "]").click()
results = driver.find_elements(By.XPATH, './/*[@title = "Number"]')
if(results):
results[0].click()
这可以使用 try 和 except 简单地实现。请在下面找到代码
for i in RegistrationNr:
driver.find_element(By.XPATH, './/*[@title = "Searchbox"]').send_keys(i)
driver.find_element(By.XPATH, ".//*[@title =" + ' "'+ i +'"' + "]").click()
try:
driver.find_element(By.XPATH, './/*[@title = "Number"]').click()
except NoSuchElementException:
print("Element is not present in the database")
您应该在 try-except 块中使用 find_elements
。使用 len 函数检查 find_elements
是否有 return 至少 1 个网页元素,如果有则点击它,否则跳过它。
代码:
for i in RegistrationNr:
driver.find_element(By.XPATH, './/*[@title = "Searchbox"]').send_keys(i)
driver.find_element(By.XPATH, ".//*[@title =" + ' "'+ i +'"' + "]").click()
try:
if len(driver.find_elements(By.XPATH, ".//*[@title = 'Number']")) >0:
driver.find_element(By.XPATH, ".//*[@title = 'Number']").click()
else:
# do something here when .//*[@title = 'Number'] is not available
except:
pass
我根据列表 RegistrationNr 中的注册号自动导出了一些报告。
逻辑是这样的:
步骤 1) 在搜索框中输入注册号(否则将找不到 html 代码)
第2步)点击注册号
步骤 3) 去导出这个组织的报告。
使用我当前的代码,如果列表中有一个不在数据库中的数字,程序就会停止,因为它没有可以点击的数字。每当发生这种情况时,如何让它查找列表中的下一项?
这是我的代码:
for i in RegistrationNr:
driver.find_element(By.XPATH, './/*[@title = "Searchbox"]').send_keys(i)
driver.find_element(By.XPATH, ".//*[@title =" + ' "'+ i +'"' + "]").click()
driver.find_element(By.XPATH, './/*[@title = "Number"]').click()
谢谢!
您可以使用 find_elements
方法简单地验证元素的存在。
如果找到元素,它将 return 一个非空列表,Python 将其视为布尔值 True
。否则它将 return 一个空列表,Python 将其视为布尔值 False
。
所以你的代码可以是这样的:
for i in RegistrationNr:
driver.find_element(By.XPATH, './/*[@title = "Searchbox"]').send_keys(i)
driver.find_element(By.XPATH, ".//*[@title =" + ' "'+ i +'"' + "]").click()
results = driver.find_elements(By.XPATH, './/*[@title = "Number"]')
if(results):
results[0].click()
这可以使用 try 和 except 简单地实现。请在下面找到代码
for i in RegistrationNr:
driver.find_element(By.XPATH, './/*[@title = "Searchbox"]').send_keys(i)
driver.find_element(By.XPATH, ".//*[@title =" + ' "'+ i +'"' + "]").click()
try:
driver.find_element(By.XPATH, './/*[@title = "Number"]').click()
except NoSuchElementException:
print("Element is not present in the database")
您应该在 try-except 块中使用 find_elements
。使用 len 函数检查 find_elements
是否有 return 至少 1 个网页元素,如果有则点击它,否则跳过它。
代码:
for i in RegistrationNr:
driver.find_element(By.XPATH, './/*[@title = "Searchbox"]').send_keys(i)
driver.find_element(By.XPATH, ".//*[@title =" + ' "'+ i +'"' + "]").click()
try:
if len(driver.find_elements(By.XPATH, ".//*[@title = 'Number']")) >0:
driver.find_element(By.XPATH, ".//*[@title = 'Number']").click()
else:
# do something here when .//*[@title = 'Number'] is not available
except:
pass