如果搜索没有结果则继续执行脚本 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