常见定位元素的接口函数以及推荐指数
1.selenium.webdriver.Chrome().find_element_by_id()----------根据元素的id这个属性的取值来定位元素。
find_element_by_id("kw")就可以定位到input这个元素。
推荐指数:★★★
理由:一个页面上出现两个id取值一样的的元素就尴尬了。
2.selenium.webdriver.Chrome().find_element_by_name()----------根据元素的name这个属性的取值来定位元素。
find_element_by_name("wd")就可以定位到input这个元素了。
推荐指数:★★
理由:大部分元素并没有被开发赋予name这个属性,如果一个页面上出现name取值一样的元素就尴尬了。
3.selenium.webdriver.Chrome().find_element_by_tag_name()-----------根据元素的本身名称来定位元素。
find_element_by_tag_name("input")就可以定位到input这个元素了。
推荐指数:★
理由:一个页面出现名称一样的元素是肯定的事情,用元素名称定位真的是太傻了。
4.selenium.webdriver.Chrome().find_element_by_class_name()----------根据元素的class这个属性的取值来定位元素。
find_element_by_class_name("s_ipt")就可以定位到input这个元素了。
推荐指数:★★★
理由:一个页面出现了两个class取值一样的元素就尴尬了。
5.selenium.webdriver.Chrome().find_element_by_xpath()-----------根据元素的任意一个属性的取值来定位该元素或者该元素的兄弟元素、父元素、子元素等。
find_element_by_xpath("//span[@id='s_btn_wr']")既可以定位到id为"s_btn_wr"的span这个元素。
find_element_by_xpath("//span[@id='s_btn_wr']/input")就可以定位到value为"百度一下"的input元素。
find_element_by_xpath("//input[@id='su']/..")就可以定位到id为"su"的input元素的父元素,也就是id为"s_btn_wr"的span这个元素。
find_element_by_xpath("//span[text()='创建']")就可以定位到名称为“创建”的这个span元素。
find_element_by_xpath("//span[text()='创建']/../span[1]")就可以定位到style为"background-image:url"这个span元素。(子元素名称相同以1,2,3.....下标标注)
推荐指数:★★★★★
理由:专治各种疑难元素的定位。
6.selenium.webdriver.Chrome().find_element_by_link_text()------------根据元素的在界面展现的字串来定位该元素,且该元素是可以点击触发新链接的。
find_element_by_link_text("syslog_lijun")就可以定位到链接元素a。
推荐指数:★★★
理由:find_element_by_xpath()可以代替这个函数获取需要的元素
特别注意:Selenium 升级到版本 4 以后, 下面这种 find_element_by 方法都作为过期不赞成的写法
wd.find_element_by_id('username').send_keys('byhy')
wd.find_element_by_class_name('password').send_keys('sdfsdf')
wd.find_element_by_tag_name('input').send_keys('sdfsdf')
wd.find_element_by_css_selector('button[type=submit]').click()
运行会有告警,所以现在都要写成下面这种格式
from selenium.webdriver.common.by import By
# 初始化代码 ....
wd.find_element(By.ID, 'username').send_keys('byhy')
wd.find_element(By.CLASS_NAME, 'password').send_keys('sdfsdf')
wd.find_element(By.TAG_NAME, 'input').send_keys('sdfsdf')
wd.find_element(By.CSS_SELECTOR,'button[type=submit]').click()
wd.find_element(By.XPATH,''//span[@id='s_btn_wr']]'').click()