《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”)
扫描二维码
获取更多精彩