《Python+selenium》自动化八大元素定位方法

注:寻找元素必须找到这个元素的唯一定位,否则达不到预期效果,一般来说最有效的为xpath、css定位,ID属性有时候会出现动态ID不好定位,class、name元素属性会出现多个相同的值定位不准确

素材地址百度网站:www.baidu.com

本文使用到的方法:
send_keys(value):输入方法,将value代替为你想输入的值

click():点击方法,可对定位到的元素进行点击事件

定位之前代码:

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()

driver.implicitly_wait(10)

driver.get(‘www.baidu.com’)

No.1:元素ID定位

函数:find_element_by_id(self,value)
示例:定位百度的输入框,方法:鼠标悬浮在输入框上,右击点击检查

定位到该元素并输入文字:driver.find_element_by_id(‘kw’).sned_keys(‘python自动化’)

No.2:元素name定位

还是百度的输入框:

driver.find_element_by_name(‘wd’).send_keys(‘python自动化’)

No.3:元素class定位:

依然为百度输入框:

driver.find_element_by_class_name(‘s_ipt’).send_keys(‘python自动化’)

No.4:元素Tag定位:

百度输入框为input标签,所以写法为:
driver.find_element_by_tag_name(‘input’).sned_keys(‘python自动化’)

No.5:元素link_text定位:

定位并点击新闻:
driver.find_element_by_link_text(‘新闻’).click()

No.6:元素Partial Link定位:

link_text与partial_link_text定位的区别:

link_text:需要输入全部的文字链接内容,“新闻”
partial_link_text:只需要输入部分文字链接内容,“新”

driver.find_element_by_partial_link_text(‘新’).click()

No.7:元素xpath定位:

xpath是一种通过路径定位的语言,路径分为绝对路径和相对路径

绝对路径:国家/城市/区/街道/小区/门牌号
相对路径:A相对B的位置,以B为起点来找A

还是以百度输入框为例:

a、绝对路径获取元素

driver.find_element_by_xpath(’/html/body/div/div/div[5]/div/div/form/span/input’)
b、通过索引来获取元素,匹配span标签下的input标签

driver.find_element_by_xpath(’//span/input’)
c、获取百度文字链接中更多按钮

注:last()函数获取都是指定元素最后的索引号
last()-1:表示倒数第二个元素

driver.find_element_by_xpath(’//div[last()]/a’)
d、通过元素属性值进行定位新闻

driver.find_element_by_xpath(’//a[@href=‘http://news.baidu.com’]’)

driver.find_element_by_xpath(’//div[@id=‘s-top-left’]/a[@href=‘http://news.baidu.com’]’)
e:模糊匹配(在测试中经常会碰见一些元素属性是动态生成的,每次访问的属性值都会不一样,这类元素定位难度极大,假如该类元素中有一部分元素内容保持不变则可以使用模糊匹配)
starts-with(str1,str2):查找属性str1的属性值为str2关键字开始的页面元素
driver.find_element_find_by_xpath(’//a[starts-with(@href,‘http://news’)]’)
含即可无需考虑位置
driver.find_element_by_xpath(’//a[contains(@href,‘http://news’)]’)
f:通过text()函数获取元素文本并定位元素

driver.find_element_by_xpath(’//a[contains(text(),‘新闻’)]’)
driver.find_element_by_xpath(’//a[contains(.,‘新闻’)]’)

定位新闻的上一级

driver.find_element_by_xpath(’//a[contains(.,‘地图’)]/…’)

谷歌便捷获取xpath

将鼠标放在元素属性上,然后移动到copy,再点击copy xpath即可获取谷歌提供的xpath定位,当谷歌提供的定位在代码实际运行中不准确时,需要自己手动编写xpath定位

No.8:元素CSS定位:

定位百度一下按钮:
driver.find_element_by_css_selector(’#su’)

css定位可以在元素上右击,然后copy–>copy selector

By方法定位:

Find_element(By.ID,“value”)

Find_element(By.NAME,“value”)
Find_element(By.CLASS_NAME,“value”)
Find_element(By.TAG_NAME,“value”)
Find_element(By.LINK_TEXT,“link text”)
Find_element(By.PARTIAL_LINK_TEXT,“partial link text”)
Find_element(By.XPATH,“xpath”)
Find_element(By.CSS_SELECTOR,“selector”)

《Python+selenium》自动化八大元素定位方法扫描二维码
获取更多精彩