- 元素
- 定义:标签头+标签尾+标签头和标签尾包括的文本内容
- 定位:元素定位最终就是通过元素的信息或元素的层级结构来进行元素定位的
- 元素的信息:元素的标签名、元素的层级结构、元素的属性
- 元素的层级结构:元素之间相互嵌套的层级结构
- 浏览器开发者工具
- 查看元素的信息,同时查看的接口的相关信息
- 浏览器都是自带浏览器开发者工具
- 浏览器开发者工具启动:
- F12
- 右键--检查(谷歌浏览器右键检查,火狐浏览器右键检查元素)
- 元素定位的方式
- ID定位
- 通过ID属性值来进行元素定位,在html标准定位中ID值是唯一的
- 定位方法:find_element_by_id(id) # id的参数表示id的属性值
- 说明:元素要有ID属性
- 案例:
-
# 根据打开注册页面,账号输入admin,密码输出123456 # 导包 import time from selenium import webdriver # 打开浏览器浏览器网站 driver=webdriver.Chrome(); driver.get("file:///D:/BaiduNetdiskDownload/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html") # 用户名输入admin driver.find_element_by_id("userA").send_keys("admin"); # 密码输入123456 driver.find_element_by_id("passwordA").send_keys("123456"); # 等待3s time.sleep(3); # 关闭浏览器资源 driver.quit();
-
- name定位
- 通过元素name属性来进行元素定位,name属性值在html页面中,是可以重复的
- 说明:元素要有name属性
- 定位方法:通过find_element_by_name
- 案例
-
# 导包 import time from selenium import webdriver # 打开浏览器 driver=webdriver.Chrome(); driver.get("http://www.baidu.com") # 搜索框输入 driver.find_element_by_name("wd").send_keys("selenium"); driver.find_element_by_id("su").click(); time.sleep(3); driver.quit();
-
- class_name定位
- 通过元素class属性值定位,class属性值是可以重复的
- 说明:元素必须要有class属性
- 方法:find_element_by_class_name
- class_name参数只是其中的一个属性值
- 案例
-
# 导包 import time from selenium import webdriver # 打开浏览器驱动对象 drivder=webdriver.Chrome(); # 打开网站 drivder.get("file:///D:/BaiduNetdiskDownload/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html") # 电话号码输入18112345678 drivder.find_element_by_class_name("telA").send_keys("18112345678"); # 邮箱输入licheng@baidu.com drivder.find_element_by_class_name("emailA").send_keys("licheng@baidu.com"); # 等待3秒 time.sleep(3); # 关闭浏览器驱动 drivder.quit();
-
- tag_name定位
- 通过元素标签名称定位,在html页面中,标签元素有很多
- 这种定位元素定位方式不建议在工作使用
- 方法:find_element_by_tar_name
- 有重复的元素,定位到元素默认的是第一个元素
- 案例
-
# 导包 import time from selenium import webdriver # 打开浏览器驱动 driver=webdriver.Chrome(); # 打开网站 driver.get("file:///D:/BaiduNetdiskDownload/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html") # 输入用户名 driver.find_element_by_tag_name("input").send_keys("谢广坤") # 等待3s time.sleep(3); # 关闭浏览器驱动 driver.quit();
-
- link_text定位
- 通过超链接的全部文件信息进行元素定位 主要用来定位a标签的
- 定位方法:find_element_by_link_text
- link_text一定是a标签的全部文本信息
- 案例
-
# 根据打开注册页面,点击 # 导包 import time from selenium import webdriver # 打开浏览器浏览器网站 driver=webdriver.Chrome(); driver.get("file:///D:/BaiduNetdiskDownload/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html") # 点击新浪 driver.find_element_by_link_text("新浪").click() # 点击访问 新浪 网站 # driver.find_element_by_link_text("访问 新浪 网站").click() # 等待3s time.sleep(3); # 关闭浏览器资源 driver.quit();
-
- partail_link_text定位
- 通过超链接的局部文本信息进行元素定位的,主要用来定位a标签
- 方法:find_element_by_partail_link_text
- 案例
-
# 根据打开注册页面,点击 # 导包 import time from selenium import webdriver # 打开浏览器浏览器网站 driver=webdriver.Chrome(); driver.get("file:///D:/BaiduNetdiskDownload/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html") # 点击访问 新浪 网站 driver.find_element_by_partial_link_text("访问 新浪 网站").click() driver.find_element_by_partial_link_text("访问").click() driver.find_element_by_partial_link_text("新浪").click() driver.find_element_by_partial_link_text("网站").click() # 等待3s time.sleep(3); # 关闭浏览器资源 driver.quit();
-
- 定位一组元素
- 方法
- find_elements_by_id
- find_elements_by_tar_name
- 定位一组元素的值是一个列表,可以通过下标的方式来使用列表中的元素,下标是从0开始的
- 案例
-
# 导包 import time from selenium import webdriver # 打开浏览器浏览器网站 driver=webdriver.Chrome(); driver.get("file:///D:/BaiduNetdiskDownload/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html") elementsInput=driver.find_elements_by_tag_name("input") print(elementsInput) # 输入账号 licheng elementsInput[0].send_keys('licheng') # 输入密码 123456 elementsInput[1].send_keys('123456') # 输入电话 15512345678 elementsInput[2].send_keys('15512345678') # 输入邮箱 licheng@baidu.com elementsInput[3].send_keys('licheng@baidu.com') # 等待3s time.sleep(3); # 关闭浏览器资源 driver.quit();
-
- 方法
- xpath定位
- css定位
- ID定位
06-17
6978
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-24
08-05