Selenium基础(一):元素定位方法
8种元素定位方法
定位方法 | python中对应的方法 |
---|---|
id | find_element_by_id() |
name | find_element_by_name() |
tag | find_element_by_tag_name() |
class | find_element_by_class_name() |
link_text | find_element_by_link_text() |
partrial link | find_element_by_partrial_link_text() |
XPath | find_element_by_xpath() |
CSS_selector | find_element_by_css_selector() |
以百度为例
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
id定位#
- id在html中唯一
- id定位方法是通过元素的id来定位元素
find_element_by_id("kw")
name定位#
- name在html中用来指定元素的名称
- name定位是通过元素的name来定位元素
find_element_by_name("wd")
tag定位#
- html中,通过tag来定义不同页面的元素,如input用来定义输入框
- tag定位是通过元素的标签名来定位元素
find_element_by_tag_name("input")
class定位#
- class在html中用来指定元素的类名
- class定位是通过元素的class来定位元素
find_element_by_class("s_ipt")
link_text定位#
- link_text定位是专门用来定位文本链接
- link_text定位是通过元素标签对之间的文字信息来定位元素
<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>
find_element_by_link_text("新闻")
partrial link定位#
- partrial link是对link定位的补充,有些文件链接比较长,可以取文字链接的部分文字进行定位,只要这个部分文字可以唯一表示这个链接
- partrial link定位是通过元素标签对之间的部分文字信息来定位元素
<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">一个很长的文本链接</a>
find_element_by_partrial_link_text("文本链接")
XPath定位#
绝对路径定位#
- 用标签名的层级关系来定位元素的绝对路径。F12可复制
find_element_by_xpath("/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input")
元素属性定位#
- 用元素的属性来定位。F12可复制
find_element_by_xpath(//*[@id="kw"])
CSS_selector定位#
以百度为例
<span class="soutu-btn">
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
</span>
通过class定位#
find_element_by_css_selector(".s_ipt")
"."表示通过通过class定位元素
通过id定位#
find_element_by_css_selector("#kw")
"#"表示通过通过id定位元素
通过标签名定位#
find_element_by_css_selector("input")
用标签名定位时需要任何符号标识,直接使用标签名
通过标签层级关系定位#
find_element_by_css_selector("span > input")
查找span中所有标签为input的子元素
通过属性定位#
find_element_by_css_selector("[name='wd']")
使用元素的属性定位,如name,只要这个属性能唯一标识这个元素
组合定位#
find_element_by_css_selector("span > input#wd")
查找span中所有标签为input的子元素,并且元素的name属性为wd
注:
- 理想情况下,元素都有唯一的id和name,通过他们来定位即可。但大多数情况下没有id、name,或属性重复,这种情况下需要XPath、CSS定位。
- Xpath和CSS比较,CSS语法更加简洁,但是理解和使用难度大,但定位速度比XPath快。这两种方法掌握一种即可解决大部分定位问题。
find_element和find_elements区别#
-
只查找一个元素的时候:可以使用find_element(),find_elements()
find_element()会返回一个WebElement节点对象,但是没找到会报错,而find_elements()不会,会返回一个空列表 -
查找多个元素的时候:只能用find_elements(),返回一个列表,列表里的元素全是WebElement节点对象
-
如果想要获取元素的相关内容(只对find_element()有效,列表对象没有这个属性) 使用 .text;
-
如果想要获取元素相关属性的值(如href对应的链接等,只对find_element()有效,列表对象没有这个属性):使用 .get_attribute("href")
作者: 是小鱼呀
出处:https://www.cnblogs.com/sophia12138/p/16169816.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!