我是靠谱客的博主 坚定冷风,最近开发中收集的这篇文章主要介绍Selenium元素定位方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前提:必须定位到唯一元素

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元素定位方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部