网站是什么样的,wordpress百度云直链,网站建设先进个人总结,青岛官网seo推广在测试过程中#xff0c;我碰到过这类的问题#xff0c;使用find_element却找不到某个元素而产生异常#xff0c;这就需要在操作某个元素之前判定该元素是否存在#xff0c;而selenium中没有判定元素是否存在的方法#xff0c;或者判定相同的元素有几个#xff0c;需要操…在测试过程中我碰到过这类的问题使用find_element却找不到某个元素而产生异常这就需要在操作某个元素之前判定该元素是否存在而selenium中没有判定元素是否存在的方法或者判定相同的元素有几个需要操作对象是第几个。但是有人已经总结一些相关的方式方法下面还是通过实例说明。find_elements获取元素个数如果确定查找的元素在网页中只有一个,那么完全可以用find_element(),但如果有多个满足要求的节点,用find_element()就只能得到第一个节点了,所以查找多个节点时,应该使用find_elements()更好。即使元素只有唯一的一个时由于网络时延或者弹窗前后台切换导致操作该元素时该元素不存在就可以使用find_elements来判定元素个数是否不为零再进行相关操作。Selenium中find_elements的方法如下但是注意复数形式别乱用。Find_elements的方法很多如果常用判定最好自己写一个函数方便调用通常选择CSS或xpath。返回0则页面没有这个元素返回1则仅有1个元素其它返回则说明有多个该元素。还是以企业邮箱为例企业邮箱默认使用二维码方式登录但是想要使用账户密码登录就需要判定“账户密码登录”元素是否存在我们可以使用 Ranorex Selocity直接复制该元素的xpath。但是这类有一个确定就是当页面存在多个同样的元素时也是返回true可能需要操作的并不是第一个。捕获异常捕获异常是使用find_element方法无法获取元素则会抛出异常如果找到元素则会返回True。# -*- coding: UTF-8 -*-from selenium import webdriverdriver webdriver.Firefox()driver.implicitly_wait(20)# 打开腾讯企业邮箱driver.get(https://exmail.qq.com/login)#判定元素是否存在def test_elements_judge(xpath): test_element driver.find_elements_by_xpath(xpath) if len(test_element) 1: return True else: return False#捕获异常def test_exceptions(xpath): try: driver.find_element_by_xpath(xpath) return True except: return Falseif test_exceptions(//form[idloginForm] /div[3]/div[classlogin_scan_footer]/a[1]): driver.find_element_by_xpath(//form[idloginForm] /div[3]/div[class login_scan_footer]/a[1]).click()