web自动化之基础定位方式

简单的写写 id,class,name,text定位吧,xpath上片文章详细解答了
在学习html页面的同学都知道,html里的标签属性有id、class、name、text等等吧?
接下来我们就简单的讲讲如何定位id、class等

#首先先导入包
from selenium import webdriver

#其次打开浏览器,访问百度
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

打开百度,我们按F12,点击百度一下,看看它有个ID属性,
在这里插入图片描述
那在代码里,我们可以这样

#id定位
driver.find_element_by_id('su').click()  #.click() 是点击操作

#class 上图可以看到百度一下的class属性是"bg s_btn"
driver.find_element_by_class_name("bg s_btn").click()  #.click() 是点击操作

我们定位下登录,发现有name和text属性
在这里插入图片描述

#name 代码如下
driver.find_element_by_name("tj_login").click()

#text 代码如下
driver.find_element_by_link_text(u'登录').click() ##为什么要用u呢?因为有些浏览器不支持中文,需要编译一下。

在我们driver .find_xxxx 中,发现find_element_by_link_text 还有find_elements_by_link_text() 还有find_element

这三种的区别呢
 1. find_element_xx_xx_xx 这个表示html页面的唯一性,也就是属性必须是唯一的
 2. find_elements_xx_xx_xx 这个代表页面有多个值的时候。就返回多个值(不细写)
 3. find_elemen 这个是什么呢?咱们来看看它的源码,如下:

我们ctr+左键查看这个源码在这里插入图片描述
发现:不管是id还是class还是name等等,它源码里返回的值是self.find_element(by=By.NAME, value=name),那find_element(by=By.NAME, value=name),是什么呢?咱们再看看这个的源码find_element
在这里插入图片描述
我们看到这个find_element,它对我们传进来的ID进行了判断。看到By.ID没?我们再看看By.ID的BY源码
在这里插入图片描述
翻译一下,就是支持一些id、class等定位,那跟我们find_elemen有什么关系呢?关系大着呢,因为没有它的支持,是不会有ID、xpath等定位方法的。我们可以根据By来进行一些定位
在这里插入图片描述
代码:

#导入驱动
from selenium import webdriver
#导入By文件
from selenium.webdriver.common.by import By
#打开浏览器访问百度
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

col = (By.ID,"su")#用一个变量值去收
driver.find_element(*col).click() #把接收的变量进行 *(解包),完成点击操作

BY支持全部定位格式操作只需要:By.xxx 就可以了
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值