一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

02-27 阅读 0评论

文章目录

  • 前言
  • 发现宝藏
  • 第01节 Selenium概述
  • 第02节 安装浏览器驱动(以Google为例)
  • 第03节 定位页面元素
    • 1. 打开指定页面
    • 2. id 定位
    • 3. name 定位
    • 4. class 定位
    • 5. tag 定位
    • 6. xpath 定位
    • 7. css 选择器
    • 8. link 定位
    • 9. 示例 有道翻译
    • 第04节 浏览器控制
      • 1. 修改浏览器窗口大小
      • 2. 浏览器前进&后退
      • 3. 浏览器刷新
      • 4. 浏览器窗口切换
      • 5. 常见操作
      • 6. 示例 CSDN页面元素交互
      • 第05节 鼠标控制
        • 1.单击元素
        • 2.双击元素
        • 3.在元素上右键单击
        • 4.在元素上悬停(鼠标悬停)
        • 5.拖拽元素到另一个位置
        • 第06节 键盘控制
          • 1.输入文本
          • 2.按键
          • 3.组合键
          • 4. 其他键盘操作
          • 第07节 元素等待
            • 1. 隐式等待
            • 2. 显示等待
            • 3. 自定义等待
            • 4. 强制等待
            • 第08节 切换操作
              • 1. 窗口切换
              • 2. 表单切换
              • 第09节 滚轮操作
              • 总结

                前言

                为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。

                一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】,一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,人工智能,我们,第1张
                (图片来源网络,侵删)

                (博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

                发现宝藏

                前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

                第01节 Selenium概述

                Selenium 是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行

                在浏览器上,它支持所有主流的浏览器

                因为 Selenium 可以控制浏览器发送请求,并获取网页数据,因此可以应用于爬虫领域

                Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网

                一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】,一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,人工智能,我们,第2张
                (图片来源网络,侵删)

                站上某些动作是否发生

                Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用

                Selenium 库的版本不同对应的方法名也会有所不同

                官方文档:http://selenium-python.readthedocs.io/index.html

                第02节 安装浏览器驱动(以Google为例)

                1. 确认浏览器版本

                一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

                一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】,一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,人工智能,我们,第4张
                (图片来源网络,侵删)

                2. 下载对应版本的驱动

                一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

                一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

                3. 如何下载历史版本的 chorm

                • 获得浏览器版本号

                  访问 https://vikyd.github.io/download-chromium-history-version/ ,可能需要科学上网(dddd),然后在 version 下拉里面选择你要的平台,然后在输入框输入版本号,例如 : windows 64位 113.0版本

                  一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

                  • 选择浏览器版本并下载压缩包

                    一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

                  • 下载完成后解压即可使用

                    一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

                    • 将 chromedriver.exe 保存到任意位置,并把当前路径保存到环境变量中(我的电脑>>右键属性>>高级系统设置>>高级>>环境变量>>系统变量>>Path),添加的时候要注意不要把 path 变量给覆盖了,如果覆盖了千万别关机,然后百度。添加成功后使用下面代码进行测试。
                      # 导入 webdriver
                      import time
                      from selenium import webdriver
                      # 调用环境变量指定的PhantomJS浏览器创建浏览器对象
                      from selenium.webdriver.common.by import By
                      driver = webdriver.Chrome()
                      # get方法会一直等到页面被完全加载,然后才会继续程序,通常测试会在这里选择
                      driver.get("https://www.baidu.com/")
                      # id="kw"是百度搜索输入框,输入字符串"长城"
                      driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("长城")
                      # id="su"是百度搜索按钮,click() 是模拟点击
                      driver.find_element(By.CSS_SELECTOR,"#su").click()
                      time.sleep(20)
                      

                      一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

                      第03节 定位页面元素

                      定位一个元素用 element,定位一组元素用 elements

                      1. 打开指定页面

                      1. 不切换新窗口

                      要使用 Selenium 来打开指定页面,首先需要初始化一个 WebDriver 实例,然后使用该实例打开目标页面。下面是一个使用 Python 和 Selenium 的示例,演示如何打开指定的页面:

                      from selenium import webdriver
                      # 初始化一个WebDriver实例,这里使用Chrome作为浏览器
                      driver = webdriver.Chrome()
                      # 打开指定的页面,将URL替换为你要访问的网页地址
                      url = "https://www.example.com"
                      driver.get(url)
                      # 在这里,你可以执行与打开页面相关的操作
                      # 最后,关闭浏览器窗口
                      driver.quit()
                      

                      在上述代码中,我们首先导入 Selenium 的 webdriver 模块,并初始化了一个 Chrome 浏览器的 WebDriver 实例。然后,使用 get 方法打开指定的页面,将目标网页的 URL 替换为你要访问的网页地址。之后,你可以在页面上执行与你的测试或任务相关的操作,然后使用 quit 方法关闭浏览器窗口

                      2. 切换新窗口

                      上面的方法会在当前窗口或标签页中打开一个新的页面,将当前页面替换为新的 URL ,使用 window.open(url) 打开新页面:

                      driver.execute_script("window.open('https://www.example.com', '_blank');")  # 使用JavaScript打开一个新页面
                      

                      这种方法使用 execute_script 方法执行 JavaScript 代码,在新的浏览器窗口或标签页中打开指定的 URL。'_blank' 参数告诉浏览器在新窗口或标签页中打开 URL。这种方式适用于在新窗口中打开页面,而不替换当前页面

                      请注意,如果你使用 window.open() 方法打开新页面,你可能需要使用 driver.window_handles 和 driver.switch_to.window() 来管理不同窗口之间的切换,就像后面提到的窗口句柄一样。这可以让你在不同的浏览器窗口中执行操作

                      总之,execute_script 方法通常与其他 Selenium 方法一起使用,用于执行 JavaScript 以实现特定的交互和操作,但它本身不用于打开新页面

                      3. 保持浏览器窗口打开

                      默认情况下,Selenium WebDriver 在脚本执行结束后会关闭浏览器窗口,但通过将选项 "detach" 设置为 True,你可以使浏览器窗口保持打开状态,以便手动进行操作

                      from selenium import webdriver
                      # 创建ChromeOptions对象
                      options = webdriver.ChromeOptions()
                      # 添加选项,防止浏览器自动关闭
                      options.add_experimental_option("detach", True)
                      # 初始化一个WebDriver实例,将选项传递给Chrome
                      driver = webdriver.Chrome(options=options)
                      # 打开指定的页面
                      url = "https://www.csdn.net"
                      driver.get(url)
                      # 在这里,你可以执行与打开页面相关的操作
                      # 手动关闭浏览器时,可以保持它打开
                      

                      2. id 定位

                      要使用 Selenium 通过元素的 ID 进行定位,你可以使用 By.ID 选择器和 find_element 方法。以下是如何通过元素的ID进行定位的示例:

                      from selenium import webdriver
                      # 初始化一个WebDriver实例,这里使用Chrome作为浏览器
                      driver = webdriver.Chrome()
                      # 打开指定的页面
                      url = "https://www.example.com"
                      driver.get(url)
                      # 通过元素的ID进行定位并执行操作
                      element = driver.find_element(By.ID, "element_id")
                      # 在这里,你可以执行与该元素相关的操作,例如单击、输入文本等
                      element.click()
                      # 最后,关闭浏览器窗口
                      driver.quit()
                      

                      在上述示例中,driver.find_element(By.ID, "element_id") 通过元素的ID属性来定位元素,并将其存储在变量 element 中,然后可以执行与该元素相关的操作。记得将 "element_id" 替换为你要查找的元素的实际 ID。

                      3. name 定位

                      # 通过元素的name属性进行定位并执行操作
                      element = driver.find_element(By.NAME,"element_name")
                      

                      4. class 定位

                      # 通过元素的CSS类名进行定位并执行操作
                      element = driver.find_element(By.By.CLASS_NAME, ".element_class")
                      

                      5. tag 定位

                      每个 tag 往往用来定义一类功能,所以通过 tag 来识别某个元素的成功率很低,每个页面一般都用很多相同的 tag

                      # 通过元素的标签名进行定位并执行操作
                      element = driver.find_element(By.TAG_NAME,"element_tag")
                      

                      element_tag 在示例代码中代表你要查找的元素的 HTML 标签名,例如 , , 等。具体来说,如果你要查找一个 元素,你可以将 element_tag 替换为 "div" ,如果你要查找一个 元素,你可以将 element_tag 替换为 "a",以此类推

                      6. xpath 定位

                      XPath(XML Path Language)是一种用于在 XML 文档中定位元素的语言,也适用于HTML 文档,因为 HTML 是一种基于 XML 的标记语言的变体。XPath 是一种功能强大的元素定位方法,它允许你准确地定位网页上的元素,无论它们在文档中的位置如何。以下是XPath定位的一些示例:

                      1. 通过元素名称定位:

                      • 定位所有的链接元素://a
                      • 定位所有的段落元素://p
                      • 定位第一个标题元素://h1

                        2. 通过元素属性定位:

                        • 定位具有特定 id 属性的元素:

                          //*[@id='element_id']
                          
                        • 定位具有特定 class 属性的元素:

                          //*[@class='element_class']
                          

                          3. 通过文本内容定位:

                          • 定位包含特定文本的元素:

                            //*[text()='要查找的文本']
                            
                          • 定位以特定文本开头的元素:

                            //*[starts-with(text(), '开头文本')]
                            
                          • 定位包含特定文本的链接:

                            //a[contains(text(), '链接文本')]
                            

                            4. 通过元素层次结构定位:

                            • 定位父元素的子元素:

                              //div[@id='parent_id']/p(查找 id 属性为 'parent_id' 的  元素下的所有  元素)
                              
                            • 定位祖先元素的子元素:

                              //div[@class='grandparent_class']//span(查找 class 属性为 'grandparent_class' 的祖先元素下的所有元素)
                              

                              5. 使用逻辑运算符:

                              • 定位同时满足多个条件的元素:

                                //input[@type='text' and @name='username'](查找type属性为 'text' 且 name 属性为 'username' 的输入框)
                                

                                这些只是 XPath 的一些基本示例,XPath具有非常丰富的语法和功能,你可以根据需要组合和定制不同的条件来定位元素。在Selenium中,你可以使用 find_element + By.XPATH 方法来实现 XPath 定位,例如:

                                element = driver.find_element(By.XPATH,"//a[contains(text(), '链接文本')]")
                                

                                这将查找包含特定文本的链接元素,你可以根据需要修改 XPath 表达式来定位不同的元素。

                                6. 示例

                                  ...
                                  
                                    
                                ...

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]