欢迎关注公众号:TestingStudio,学习更多测试开发必备技能
pycharm新建了一个项目,用于做web自动化测试,直接安装了selenium这个库,发现之前写的Selenium元素定位的代码运行之后会报错,发现是Selenium更新到新版本(4.x版本)后,以前的一些常用的代码的语法发生了改变,当然如果没有更新过或是下载最新版本的Selenium是不受到影响的,还可以使用以前的写法。接下来就是讨论有关于新版本后Selenium定位元素代码的新语法,大家后面别再踩这个坑了。
Selenium3版本的元素定位写法
代码语言:txt复制inputTag = driver.find_element_by_id("value") # 利用ID定位
inputTags = driver.find_element_by_class_name("value") # 利用类名定位
inputTag = driver.find_element_by_name("value") # 利用name属性定位
inputTag = driver.find_element_by_tag_name("value") # 利用标签名定位
inputTag = driver.find_element_by_xpath("value") # 利用xpath定位
inputTag = driver.find_element_by_css_selector("value") # 利用CSS选择器定位
在版本没有更新前我们使用的都是driver.findelement_by方法名(”value”),方法名就是by_id、by_class_name、by_name等等,而"value",则是传入的值,以百度搜索按钮为例,浏览器开发者工具可看其HTML源代码中属性id=”su“,以旧版本的写法使用id值查找搜索框应该是:
代码语言:txt复制searchTag = driver.find_element_by_id("su")
在版本没有更新之前,通常情况下运行都是能够正确定位到对应的元素,但是Selenium经过版本升级之后,运行后会报错,以driver.find_element_by_id(“value”)为例(其他报错也是类似下面的报错信息),运行后会出现上面的错误。
4版本的Selenium已经不再支持上面的写法,我们需要导入其他方法,改变我们的元素定位写法:
引入By方法
代码语言:txt复制from selenium.webdriver.common.by import By
新元素定位方法
代码语言:txt复制 # searchTag = driver.find_element_by_id("value") # 利用ID定位
# 改为:
# searchTag = driver.find_element(By.ID, "value")
# searchTag = driver.find_element_by_class_name("value") # 利用类名定位
# 改为:
# searchTag = driver.find_element(By.CLASS_NAME, "value")
# searchTag = driver.find_element_by_name("value") # 利用name属性定位
# 改为:
searchTag = driver.find_element(By.NAME, "value")
# searchTag = driver.find_element_by_tag_name("value") # 利用标签名定位
# 改为:
searchTag = driver.find_element(By.TAG_NAME, "value")
# searchTag = driver.find_element_by_xpath("value") # 利用xpath定位
# 改为:
searchTag = driver.find_element(By.XPATH, "value")
# searchTag = driver.find_element_by_css_selector("value") # 利用CSS选择器定位
# 改为:
searchTag = driver.find_element(By.CSS_SELETOR, "value")
改完之后就正常了,不需要去降selenium的版本了。