小工具知识网

当前位置: 首页 > 行业知识 > selenium脚本编写及八大元素定位方法

行业知识

selenium脚本编写及八大元素定位方法

2026-10-31 05:54:31 来源:互联网转载

selenium脚本编写

上���文章介绍了selenium环境搭建,搭建好之后就可以开始写代码了

基础脚本,打开一个网址
from selenium import webdriverdriver = webdriver.Chrome()#打开chrome浏览器driver.get('https://www.baidu.com') #打开百度
打开本地HTML文件

上篇文章我自己写了一个html文件,放在了当前路径下

  • 第一种方式

    通过绝对路径打开

    from selenium import webdriverdriver = webdriver.Chrome()#打开chrome浏览器driver.get(r'D:\sele_study-selenium\day1_sele\test.html')
    • 第二种方式

      通过相对路径打开

      本质上也是通过方法把相对路径转为绝对路径

      #第一种转为绝对路径的方法from selenium import webdriverfrom pathlib import Path#pathlib:路径处理库driver = webdriver.Chrome()#打开chrome浏览器html = Path('./test.html')driver.get(str(html.resolve()))#Path.resolve:该方法将一些的 路径/路径段 解析为绝对路径 #第二种转为绝对路径的方法from selenium import webdriverimport oshtml = os.path.abspath('./test.html')#返回绝对路径driver = webdriver.Chrome()driver.get(html)
      优雅地打开浏览器(with)

      用with打开浏览器,不用手工关闭

      from selenium import webdriverfrom time import sleepwith webdriver.Chrome() as driver:#with上下文管理器,不需要我去关闭    driver.get('https://www.baidu.com')#打开百度    sleep(5)#等5秒,自动关闭

      认识webdriver对象方法和属性

      初识元素定位方法

      #祖宗方法 find_element#通过class属性的值定位(底层是css)find_element_by_class_name#√√√通过css 选择器定位(推荐,最快)find_element_by_css_selector#√通过id的值定位(底层是css)find_element_by_id#√通过a标签的文本定位(底层是XPATH)find_element_by_link_text#通过name属性的值来定位(底层是css)find_element_by_name  #通过a标签的部分文本定位(模糊匹配)(底层是XPATH)find_element_by_partial_link_text#通过标签名来定位(底层是css)find_element_by_tag_name#√√通过xpath方法定位(慢)find_element_by_xpath             #以下方法的用法同上,只是返回的是一组元素(列表形式)find_elements                        find_elements_by_class_name          find_elements_by_css_selectorfind_elements_by_idfind_elements_by_link_textfind_elements_by_namefind_elements_by_partial_link_textfind_elements_by_tag_namefind_elements_by_xpath

      除了祖宗方法,其他八种定位方式被大家称为‘selenium八大元素定位’

      可以配合HTML全局属性介绍来理解这些方法。

      HTML全局属性介绍:https://www.w3school.com.cn/tags/html_ref_standardattributes.asp

      用法示例

      以下方法演示用的是我们上篇文章写的HTML文件

      需要的朋友可以去上篇文章复制或公众号后台输入‘html练习’获取源文件

      find_element_by_name

      通过name属性的值来定位

      from selenium import webdriverfrom pathlib import Pathfrom time import sleepwith webdriver.Chrome() as driver:#打开chrome浏览器    html = Path('./test.html')    driver.get(str(html.resolve()))#Path.resolve:该方法将一些的 路径/路径段 解析为绝对路径    driver.find_element_by_name('username').send_keys('admin')    #找到name的值为'username'的标签,并输入'admin'    sleep(5)#5秒后关闭

      知识点:

      1.如果遇到重复的元素,操作的永远是第一个

      2.send_keys方法,不会清空原来的内容

      • find_element_by_id

        通过id的值定位

        from selenium import webdriverimport osfrom time import sleepwith webdriver.Chrome() as driver:    html = os.path.abspath('./test.html')#获取绝对路径    driver.get(html)    driver.find_element_by_id('username').send_keys('admin')    #找到id的值为'username'的标签,并输入'admin'    sleep(5)

        知识点:

        1.id是唯一的

        2.可能会变,需要注意识别

        3.首字符是数字的要注意css的表达式(后续详细介绍)

        • find_element_by_class_name

          通过class属性的值定位

          from selenium import webdriverimport osfrom time import sleepwith webdriver.Chrome() as driver:    html = os.path.abspath('./test.html')#获取绝对路径    driver.get(html)    # 1. 输入用户名    driver.find_element_by_class_name('aa').send_keys('admin')    #找到class的值为'aa'的标签,并输入'admin'    # 2. 输入密码    # driver.find_element_by_class_name('bb cc').send_keys('123456')--错误写法    driver.find_element_by_class_name('bb').send_keys('pass')    #找到class的值为'bb'的标签,输入'pass'    driver.find_element_by_class_name('cc').send_keys('word')    #找到class的值为'cc'的标签,输入'word'    sleep(5)

          知识点:

          1.class也容易重复

          2.class ='bb cc'规定元素的一个或多个类名,等同于class1,class2='bb','cc'

          所以不能直接用driver.find_element_by_class_name('bb cc')

          find_element_by_link_text

          通过a标签的全文本定位,需要文本完全匹配

          from selenium import webdriverimport osfrom time import sleepwith webdriver.Chrome() as driver:    html = os.path.abspath('./test.html')#获取绝对路径    driver.get(html)    driver.find_element_by_link_text('百度一下,你就不知道').click()    #找到文本为'百度一下,你就不知道'文本的a标签,并点击    sleep(5)#等待5秒关闭 
          • find_element_by_partial_link_text

            通过a标签的部分文本定位(模糊匹配)

            #方法二:模糊匹配from selenium import webdriverimport osfrom time import sleepwith webdriver.Chrome() as driver:    html = os.path.abspath('./test.html')#获取绝对路径    driver.get(html)    driver.find_element_by_partial_link_text('必应').click()    #找到包含'必应'文本的a标签,并点击    sleep(5)#等待5秒关闭 

            知识点:

            1.link_text 的两种定位方式只适用于a标签的文本

            2.link_text 完全匹配

            3.parti_link_text 部分(模糊)可以是开头是、包含、结尾是

            4.click()点击

            find_element_by_tag_name

            通过标签名来定位,因为重复特别多,所以很少用,不做介绍。

            find_element_by_css_selector

            通过css 选择器定位(推荐,最快)

            内容比较多且重要,之后单独文章做介绍。

            find_element_by_xpath

            通过xpath方法定位

            内容比较多且重要,之后文章单独介绍。

            总结:

            感谢每一个认真阅读我文章的人!!!

            作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

            文档获取方式: 加入我的软件测试交流群:1007119548免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

            这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

上一篇:对时服务器怎么实现?

下一篇:服务器wifi怎么连接?