简单的写写 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
这三种的区别呢
find_element_xx_xx_xx 这个表示html页面的唯一性,也就是属性必须是唯一的
find_elements_xx_xx_xx 这个代表页面有多个值的时候。就返回多个值(不细写)
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 就可以了
作者:我不管,我爱测试
原文链接:https://blog.csdn.net/qq_39413365/article/details/90673741