以下脚本跟随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
的元素,我希望脚本继续工作。
答案 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()