• 0
  • 0
分享
  • web自动化之基础定位方式——软件测试圈
  • 饭团🍙 2022-03-24 14:39:37 字数 1482 阅读 452 收藏 0

简单的写写 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属性,

1.jpg

那在代码里,我们可以这样

#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属性

2.jpg

#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+左键查看这个源码

3.jpg

发现:不管是id还是class还是name等等,它源码里返回的值是self.find_element(by=By.NAME, value=name),那find_element(by=By.NAME, value=name),是什么呢?咱们再看看这个的源码find_element

4.jpg

我们看到这个find_element,它对我们传进来的ID进行了判断。看到By.ID没?我们再看看By.ID的BY源码

5.jpg

翻译一下,就是支持一些id、class等定位,那跟我们find_elemen有什么关系呢?关系大着呢,因为没有它的支持,是不会有ID、xpath等定位方法的。我们可以根据By来进行一些定位

6.jpg

代码:

#导入驱动
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 就可以了

7.jpg


作者:我不管,我爱测试

原文链接:https://blog.csdn.net/qq_39413365/article/details/90673741

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
      • 51testing软件测试圈微信