Python+Selenium练习-元素定位八种方法及实例

以百度为例,首先,用F12-开发者模式查看元素,如图

在这里插入图片描述
一、通过id定位:find_element_by_id()

1.可以在图中看到,这个搜索框的id=“kw”,这里可以通过它的id属性单位到这个元素。
2.定位到搜索框后,用send_keys()方法键入搜索值

#coding=UTF-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#通过ID定位搜索框
driver.find_element_by_id("kw").send_keys("testing")
driver.find_element_by_id("su").click()
driver.quit()

二、通过name定位:find_element_by_name()

1.从上面定位到的元素属性中,可以看到有个name属性:name=“wd”,这里可以通过它的name属性单位到这个元素。

#coding=UTF-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#通过name定位搜索框
driver.find_element_by_name("wd").send_keys("testing")
driver.find_element_by_id("su").click()
driver.quit()

说明:这里运行后会报错,说明这个搜索框的name属性不是唯一的,无法通过name属性直接定位到输入框

三、通过class定位:find_element_by_class_name()

1.从上面定位到的元素属性中,可以看到有个class属性:class=“s_ipt”,这里可以通过它的class属性定位到这个元素。

#coding=UTF-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#通过class定位搜索框
driver.find_element_by_class_name("s_ipt").send_keys("testing")
driver.find_element_by_id("su").click()
driver.quit()

四、通过tag定位:find_element_by_tag_name()

1.从上面定位到的元素属性中,可以看到每个元素都有tag(标签)属性,如搜索框的标签属性,就是最前面的input
2.很明显,在一个页面中,相同的标签有很多,所以一般不用标签来定位。

五、通过link定位:find_element_by_link_text()

在这里插入图片描述

 

查看页面元素:

<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
1
这里新闻就是个超链接,这种元素就可以用link定位的方式来定位

#coding=UTF-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#通过link定位新闻按钮
driver.find_element_by_link_text("新闻").click()
driver.quit()

六、通过partial_link定位:find_element_by_partial_link_text()

1.有时候一个超链接它的字符串可能比较长,如果输入全称的话,会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串就可以了
2.如“新闻”,只需输入“闻”也可以定位到

#coding=UTF-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#通过partial_link定位“新闻”按钮
driver.find_element_by_partial_link_text("闻").click()
driver.quit()
 

七、通过xpath定位:find_element_by_xpath()

在这里插入图片描述

 

1.以上定位方式都是通过元素的某个属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,这么办呢?或者说它的属性很多重复的。这个时候就可以用xpath解决
2.xpath是一种路径语言,跟上面的定位原理不太一样,首先第一步要先学会用工具查看一个元素的xpath
3.在火狐浏览器种增加插件xPath Finder
4.如图,点击右上角xPath Finder图标,查看xpath的地址


 #coding=UTF-8
from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#通过xpath定位搜索框
driver.find_element_by_xpath("//*[@id=‘kw’]").send_keys("testing")
#这里要把双引号改成单引号
driver.find_element_by_id("su").click()
driver.quit()

关于不使用工具如果通过Xpath来定位,后续总结。

八、通过css定位:find_element_by_css_selector()

在这里插入图片描述

 

CSS定位和Xpath定位类似。但是CSS定位更快,语法更简洁。不过速度快这条基本上也可以忽略,因为都很快,也察觉不出来那一点点差距,还是看个人操作习惯吧。
这里举个例子,关于详细的定位方式,也留后续总结。
如图,是开发者模式下定位显示的数据,这三个属性都可以用来定位。这里用id“#kw”定位


#coding=UTF-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#通过css定位搜索框
driver.find_element_by_css_selector("#kw").send_keys("testing")
driver.find_element_by_id("su").click()
driver.quit()

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值