Selenium元素定位

  1. 元素
    1. 定义:标签头+标签尾+标签头和标签尾包括的文本内容
    2. 定位:元素定位最终就是通过元素的信息或元素的层级结构来进行元素定位的
    3. 元素的信息:元素的标签名、元素的层级结构、元素的属性
    4. 元素的层级结构:元素之间相互嵌套的层级结构
  2. 浏览器开发者工具
    1. 查看元素的信息,同时查看的接口的相关信息
    2. 浏览器都是自带浏览器开发者工具
    3. 浏览器开发者工具启动:
      1. F12
      2. 右键--检查(谷歌浏览器右键检查,火狐浏览器右键检查元素)
  3. 元素定位的方式
    1. ID定位
      1. 通过ID属性值来进行元素定位,在html标准定位中ID值是唯一的
      2. 定位方法:find_element_by_id(id) # id的参数表示id的属性值
      3. 说明:元素要有ID属性
      4. 案例:
        1. # 根据打开注册页面,账号输入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();

           

    2. name定位
      1. 通过元素name属性来进行元素定位,name属性值在html页面中,是可以重复的
      2. 说明:元素要有name属性
      3. 定位方法:通过find_element_by_name
      4. 案例
        1. # 导包
          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();

           

    3. class_name定位
      1. 通过元素class属性值定位,class属性值是可以重复的
      2. 说明:元素必须要有class属性
      3. 方法:find_element_by_class_name
        1. class_name参数只是其中的一个属性值
      4. 案例
        1. # 导包
          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();
    4. tag_name定位
      1. 通过元素标签名称定位,在html页面中,标签元素有很多
      2. 这种定位元素定位方式不建议在工作使用
      3. 方法:find_element_by_tar_name
      4. 有重复的元素,定位到元素默认的是第一个元素
      5. 案例
        1. # 导包
          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();
    5. link_text定位
      1. 通过超链接的全部文件信息进行元素定位 主要用来定位a标签的
      2. 定位方法:find_element_by_link_text
      3. link_text一定是a标签的全部文本信息
      4. 案例
        1. # 根据打开注册页面,点击
          # 导包
          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();
    6. partail_link_text定位
      1. 通过超链接的局部文本信息进行元素定位的,主要用来定位a标签
      2. 方法:find_element_by_partail_link_text
      3. 案例
        1. # 根据打开注册页面,点击
          # 导包
          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();
    7. 定位一组元素
      1. 方法
        1. find_elements_by_id
        2. find_elements_by_tar_name
      2. 定位一组元素的值是一个列表,可以通过下标的方式来使用列表中的元素,下标是从0开始的
      3. 案例
        1. # 导包
          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();

           

    8. xpath定位
    9. css定位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值