在使用新版的Selenium对网页代码中存在相同class name属性的元素进行定位,在定位的过程中发现使用先前的定位方法已经无法成功对所要操作组件进行定位,这是什么问题呢?下面为大家进行解答。
大概为了统一编写格式,方便阅读理解,新版本的Selenium出来后,摒弃了旧版的编辑方法,之前的八大定位方式已经不适用于新版的编辑器,对元素进行定位时,系统会进行报错提醒,所以我们在编写脚本的过程中要改变一些相关的方式方法,以下是新老版本元素定位的对比:
一、老版本元素定位方法:
find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()
当定位一组对象时在elements后方加上s,当定位单个对象是使用element即可(此处不多赘余,老版本selenium更多信息网上有很多资料)。
二、新版本元素定位方法
find_element(By.XPATH)
find_element(By.CSS_SELECTOR)
find_element(By.ID)
find_element(By.TAG_NAME)
find_element(By.class_name,)
find_element(By.PARTIAL_LINK_TEXT)
find_element(By.LINK_TEXT)
find_element(By.name)
使用新版selenium定位对象要先对库进行导入,不能再和之前一样直接使用定位方法。
from selenium.webdriver.commom.by import By
具体定位信息参考网上资料,此处解决相同class name属性的对象定位问题。
先前driver.find_elements_by_class_name("name")[1]已经无法使用,这是相应的报错信息:
下面是我的解决方案,定义一个list提取全部的对象,然后对对象进行操作:文章来源:https://www.toymoban.com/news/detail-762568.html
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
dr = webdriver.Chrome()#驱动
dr.get("https://www.csdn.net/") #访问目标网站
elements = dr.find_elements(By.CLASS_NAME,'navigation-right')#使用class方法进行元素定位
sleep(3)#等待3s
element_to_click = elements[2]#选择列表的第三个对象
element_to_click.click()#对选择对象进行点击操作
sleep(3)#等待3s
使用该方法就可以在新版selenium中对多个相同class属性的元素进行定位操作了!文章来源地址https://www.toymoban.com/news/detail-762568.html
到了这里,关于新版Selenium使用Python对web页面多个相同Class Name属性的元素进行选择&新老版本对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!