概述
前提:必须定位到唯一元素
1、id定位
driver.find_element_by_id("kw").send_keys('日历')
2、name定位
driver.find_element_by_name("wd").send_keys('杰森')
3、class定位
driver.find_element_by_class_name("s_ipt").send_keys('深圳天气')
4和5只能作用于超链接!
4、link_text定位
driver.find_element_by_link_text("新闻").click()
5、partall_link_text定位
通过partail_link_text定位(针对a标签),和link_text的区别是,支持模糊搜索文本,如果文本很长或者包含空格等,就可以用这个
driver.find_element_by_partial_link_text("新").click()
6、tag_name定位(基本不用,很难唯一)
表单不能单机,获取action的值
print(driver.find_element_by_tag_name("form").get_attribute("action"))
7、xpath定位(6种定位方式)
1、绝对路径:从最初的/html一直往后面找
driver.find_element_by_xpath('/html/body/div/div/div/div/div/form/span/input').send_keys("日历")
2、相对路径(一定要找到一个唯一的标签)
备注:相对路径和绝对路径的区别是,绝对路径是一个斜杠开头,相对路径是两个斜杠开头,代表的是在整个网页去搜索我们需要的标签。
driver.find_element_by_xpath('//form/span/input').send_keys('深圳')
3、通过元素索引定位
driver.find_element_by_xpath('//form/span[2]/input').click()
4、通过元素属性定位
单个属性值
driver.find_element_by_xpath('//input[@autocomplete="off"]').send_keys('广州')
多个属性值:可以用并级,加and即可用
driver.find_element_by_xpath('//input[@autocomplete="off" and @name="wd"]').send_keys('广州')
5、通过元素属性值定位
以**属性值开始
driver.find_element_by_xpath("//input[starts-with(@autocomplete,'of')]").send_keys('火锅')
截取属性值(class第三个值开始到最后,为ipt)
driver.find_element_by_xpath("//input[substring(@class,3)='ipt']").send_keys('巧乐兹')
属性值包含**即可
driver.find_element_by_xpath("//input[contains(@class,'ipt')]").send_keys('二哈')
6、通过标签文本定位
driver.find_element_by_xpath('//a[text()="新闻"]').click()
各种xpath组合定位
driver.find_element_by_xpath("//a[contains(text(),'新闻')]").click()
8、css定位
(通过.去查找class,通过#去查找id)
1、绝对路径
也可以不用空格,用>号连接子元素。查找的时候可以加上class或者id
driver.find_element_by_css_selector('html body div div div div div form span input').send_keys("日历")
2、相对路径
i:通过class定位
driver.find_element_by_css_selector(".s_ipt").send_keys('深圳天气')
class定位也可以在前面加标签名
driver.find_element_by_css_selector("input.s_ipt").send_keys('深圳天气')
ii:通过id定位
driver.find_element_by_css_selector("#kw").send_keys('深圳天气')
id定位也可以在前面加标签名
driver.find_element_by_css_selector("input#kw").send_keys('深圳天气')
3、通过属性定位
单个属性
driver.find_element_by_css_selector('input[autocomplete="off"]').send_keys('广州')
多个属性
driver.find_element_by_css_selector('input[autocomplete="off"][name="wd"]').send_keys('广州')
4、通过部分属性值定位
以**开头
driver.find_element_by_css_selector("input[autocomplete^='of']").send_keys('火锅')
以**结尾
driver.find_element_by_css_selector("input[autocomplete$='of']").send_keys('火锅')
包含**即可
driver.find_element_by_css_selector("input[autocomplete*='ff']").send_keys('火锅')
5、通过查询子元素
通过空格和>号查找(只能一级一级的查找)
第二种方法,类似xpath的索引查找
driver.find_element_by_css_selector("div#s-top-left a:nth-child(3)").click()
6、通过查找兄弟元素
表示先查找到第一个儿子,新闻页面
driver.find_element_by_css_selector("div#s-top-left a").click()
后面+两个a代表找第1+2的第三个儿子
driver.find_element_by_css_selector("div#s-top-left a +a +a").click()
可以和第五种方法合并一起用
driver.find_element_by_css_selector("div#s-top-left a:nth-child(3) +a").click()
最后
以上就是坚定冷风为你收集整理的Selenium元素定位方法的全部内容,希望文章能够帮你解决Selenium元素定位方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复