在硒python中找不到元素时继续

时间:2018-08-25 13:51:34

标签: python selenium

以下脚本跟随Instagram中的页面:

browser = webdriver.Chrome('./chromedriver')

# GO INSTAGRAM PAGE FOR LOGIN

browser.get('https://www.instagram.com/accounts/login/?hl=it')

sleep(2)

# ID AND PASSWORD

elem = browser.find_element_by_name("username").send_keys('test')

elem = browser.find_element_by_name("password").send_keys('passw')

# CLICK BUTTON AND OPEN INSTAGRAM

sleep(5)

good_elem = browser.find_element_by_xpath('//*[@id="react-root"]/section/main/div/article/div/div[1]/div/form/span/button').click()

sleep(5)

browser.get("https://www.instagram.com")


# GO TO PAGE FOR FOLLOW
browser.get("https://www.instagram.com/iam.ai4/")

sleep(28)

segui = browser.find_element_by_class_name('BY3EC').click()

如果未找到具有类BY3EC的元素,我希望脚本继续工作。

3 个答案:

答案 0 :(得分:2)

找不到元素时,它会抛出NoSuchElementException,因此可以使用try/except来避免这种情况,例如:

from selenium.common.exceptions import NoSuchElementException

try:
    segui = browser.find_element_by_class_name('BY3EC').click()

except NoSuchElementException:
    print('Element BY3EC not found') # or do something else here

您可以看一下selenium exceptions,以了解它们各自的用途。

答案 1 :(得分:1)

用try catch围绕它,这样您就可以构建一条令人满意的路径并处理失败,因此您的测试用例将始终有效

答案 2 :(得分:0)

最佳做法是不使用异常来控制流程。异常应该是例外...罕见和意外。执行此操作的简单方法是使用定位器获取一个集合,然后查看该集合是否为空。如果是这样,您就知道该元素不存在。

在下面的示例中,我们在页面上搜索所需的元素,并检查该集合包含一个元素(如果存在)...单击它。

segui = browser.find_elements_by_class_name('BY3EC')
if segui:
    segui[0].click()