首页 > 其他分享 >三、浅谈 Selenium

三、浅谈 Selenium

时间:2024-06-20 17:56:42浏览次数:16  
标签:定位 浏览器 浅谈 Selenium driver 页面 name

1.Selenium 简介:

  Selenium 是一款免费的、开源的、基于 Web 页面的 UI 自动化测试工具,可以支持多个浏览器。

 

2.Selenium 框架由多个工具组成:Selenium IDE、Selenium RC、Selenium WebDriver、Selenium Grid

  (2.1)Selenium IDE:通过录制操作完成基本脚本构建的工具;

  (2.2)Selenium RC

  (2.3)Selenium WebDriver:可以直接发命令给浏览器

  (2.4)Selenium Grid:用于运行不同的机器,不用的浏览器进行并行测试,目的就是加快测试用例的运行速度,从而减少测试运行的总时间。

 

3. Selenium 的基本元素定位:

  (1)id定位:id 属性在 HTML 中是唯一的,类似于元素身份证号码,driver.find_element_by_id("id")

  (2)name定位:识别首个 name 属性等于定位值的页面元素,driver.find_element_by_name("name")

  (3)class_name定位:class 属性在页面中不是唯一的,driver.find_element_by_clss_name("class")

  (4)tag_name定位:driver.find_element_by_tag_name("tag_name")

  (5)link_text定位:定位文本链接,driver.find_element_by_link_text("link_text")

  (6)partial_link_text:提取部分文本链接定位,driver.find_element_by_partial_link_text("部分文本")

  (7)xpath 定位:

    两种方式:绝对路径定位、相对路径定位

    相对路径:表示相对当前标签而言的路径结构

    (1)属性定位语法://标签名[@属性名=属性值]

    (2)多属性定位://标签名[@name='username' and @pwd='password']

    (3)函数定位:

        text 函数定位语法://标签名[text()=文本内容]

        contains函数定位语法://标签名[contains(@属性名, 对应属性值)]

  (8)css定位:通过选择器定位

  (9)JS定位:常用的定位方式总结:

    id定位:document.getElementById()

    name定位:document.getElementByName()

    tag定位:document.getElementByTagName()

    class定位:document.getElementByClassName()

    css定位:document.querySelectorAll()

    举例:js = "document.getElementById("id")"

       driver.execute_script(js)

 

4.隐藏元素如何定位?

  首先隐藏元素是可以定位的,只是隐藏元素无法进行操作。

  解决方法:通过 JS 脚本定位到该元素,获取对应的元素对象,然后通过 removeAttribute 和 setAttribute 两个方法完成属性的删除或者重新赋值操作,使当前属性处于显示状态。

 

5.selenium对浏览器操作:

  (1)浏览器前进操作:

    forward():在初始操作时,不存在前进操作,一般与back配合使用;

    back():后退操作

  (2)浏览器的最大化、最小化、全屏

    窗口最大化:driver.maximize_window()

    窗口最小化:driver.minimize_window()

    窗口全屏:driver.fullscreen_window()

  (3)浏览器 close 和 quit 方法的区别:

    driver.close():关闭当前对象所处页面的窗口

    driver.quit():关闭所有的页面窗口并关闭驱动器

  (4)浏览器的相关属性获取

    获取当前对象的 url 地址:driver.current_url

    获取当前对象的句柄:driver.current_window_handle

    获取当前对象的标题:driver.title

    获取当前对象的所有句柄:driver.window_handles

  (5)浏览器操作:driver.switch_to_window(句柄名)

  (6)浏览器中 alert 框处理:

    alert 框是无法直接进行元素定位的,需要使用 driver.switch_to.alert 先切换到 alert 对象中,然后调用对应的方法执行。

    accept():表示确定,dismiss():表示取消

  (7)浏览器的滚动条操作:
    浏览器滚动条无法直接进行定位,所以需要借助 JS 脚本完成操作。

    driver.execute_script("window.scrollTo(0, 100)"):x 表示横向滚动,y表示纵向滚动

  (8)driver.get_attribute(name):获取属性值

 

6.下拉列表框的定位方式:

  WebDriver 内置了一个 Select 模块,用于实现下拉列表框的处理操作。

  from selenium.webdriver.support.select import Select

  定位方法:

  (1)select_by_index():通过索引定位(从 0 开始)

  (2)select_by_value():通过 value 值定位

  (3)select_by_visible_text():通过选项的文本值定位

 

7. 三种元素等待方式:

  (1)强制等待:time.sleep(x),表示等待 x 秒后,进行下一步操作。强制等待又称为强制休眠,该方式只能够作用于当前行的脚本。

    缺点:影响代码的执行速度,不能精确设定代码的休眠时间,时间过长则一定要等待设定的时间之后才能继续执行代码。

    优点:使用简单,可以在调试时使用

  (2)隐式等待:driver.implicitly_wait(x):在 x 时间内页面加载完成,进行下一步操作。隐式等待又称为智能等待,也称为全局等待。表示整个页面中的所有元素加载完才会执行,会根据其内部所设定到的频率不断地刷新页面继续记载,并检测当前所执行的元素是否加载完毕。

    缺点:使用隐式等待,程序会一直等待整个页面加载完成,才会执行下一步操作。但有时页面想要的元素已经加载完成了,但网页上个别元素没有加载完成,仍要等到页面全部加载才能执行下一步,使用也不是很灵活。

    优点:隐式等待对整个脚本的生命周期都起作用,所以只要设置一次即可。

  (3)显式等待:WebDriverWait,对单个元素设定一定的频率,使其按频率刷新当前页面并检测是否存在该元素。

    from selenium.webdriver.support.wait import WebDriverWait

    WebDriverWait(driver, 5).until(lambda dir: dir.find_element_by_id("value"))

 

8.验证码的处理方式:

  (1)去掉验证码:将验证码相关代码注释掉

  (2)设置万能验证码:让开发人眼在程序中声明一个万能验证码

  (3)只保留一个资源:如果是图片资源,实际就是在指定的文件夹资源库中随机抽取一张,将服务器上的所有图片全部删除只留一张,相当于固定验证码

  (4)光学字符识别:使用 python-tesseract 模块来识别图片中的验证码

  (5)打码平台识别:如斐斐、图鉴等,调用第三方接口识别

 

标签:定位,浏览器,浅谈,Selenium,driver,页面,name
From: https://www.cnblogs.com/xianyumaixianyu/p/18259166

相关文章

  • 二、浅谈 HTML
    1.什么是HTML:HTML称为超文本标记语言,是一种用于描述网页的语言,主要由一系列的标签构成。HTML的本质就是文本,但是它需要通过浏览器进行解释并渲染。2.HTML元素:HTML文档最基本的构成是HTML元素,它是使用标签来表现的。HTML元素分为三种类型:块状元素、内联元......
  • 一、浅谈自动化测试基础
    1.数据驱动思想:实现数据与脚本代码的分离操作,将数据存储在指定的数据格式文件或数据库中,如Excel、Json、Yaml、Mysql等。2.关键字驱动思想:基于数据驱动思想实现进一步的封装,以行为动作驱动业务。将每一步操作封装在单独的类、单独的函数中,一个函数或者一个类中的方法......
  • Selenium如何实现拼多多自动抢红包
    使用Selenium来实现拼多多自动抢红包涉及以下几个步骤:安装必要的工具和库:安装Selenium库:可以使用pip进行安装。安装浏览器驱动程序:例如ChromeDriver,如果你使用的是Chrome浏览器。pipinstallselenium设置Selenium和浏览器驱动:下载并配置浏览器驱动程序。设置SeleniumW......
  • SpringBoot+Selenium模拟用户操作浏览器
    SeleniumSelenium是一个用于Web应用程序自动化测试的开源工具套件。它主要用于以下目的:浏览器自动化:Selenium能够模拟真实用户在不同浏览器(如Chrome、Firefox、IE/Edge等)中的交互行为,通过编程方式控制浏览器执行一系列操作,例如点击按钮、填写表单、导航页面等。兼容性测试:通过......
  • 浅谈 值类型和引用类型 在堆和栈中的存储
    浅谈值类型和引用类型在堆和栈中的存储简介本文将简单介绍什么是“栈”(stack)和“堆”(heap),并讨论值类型和引用类型在这两种内存结构中的存储方式。栈和堆的概念栈:后入先出(LIFO)的数据结构,由CLR管理,每个线程有自己的栈。堆:存放较为零散,由GarbageCollector(GC)管理,整个进程共......
  • IPv6转换技术是什么?浅谈IPv6转换的两种技术方式
    与双栈技术和隧道技术相比,IPv6转换技术具备改造周期短、成本低、部署灵活等优势,是目前各大政企网站进行IPv6升级改造的主要方式。采用协议转换实现IPv4到IPv6过渡的优点是不需要进行IPv4、IPv6节点的升级改造,缺点是用来实现IPv4节点和IPv6节点相互访问的方法比较复杂,网络设备......
  • python中selenium封装
    fromseleniumimportwebdriverimporttimeclasscms(object):a=webdriver.Chrome()definit(self):self.a.get("http://192.168.193.135:8080/cms/manage/login.do")time.sleep(2)self.a.find_element_by_name("userAccount").send_keys(&quo......
  • 浅谈配置元件之TCP取样器配置/TCP取样器
    浅谈配置元件之TCP取样器配置/TCP取样器1.引言在进行网络性能测试时,TCP取样器配置和TCP取样器(TCPSampler)是两个重要的组件,他们允许用户直接发送和接收TCP数据包,这对于测试服务器的TCP连接处理能力、模拟特定的TCP交互场景非常有用。本文档将详细介绍如何在JMeter中配......
  • selenium常用元素定位方式
    selenium中的定位方式:1、id:根据id来获取元素;2、name:根据元素的name属性定位;3、tagName:根据元素的标签名定位;4、className:根据元素的样式class值定位;5、linkText:根据超链接的文本值定位;6、partialLinkText:根据超链接的部分文本值定位;7、cssSelector:css选择器定位;8、xpath:通......
  • 浅谈红队攻防之道-将exe文件指定ico图标上线
    我们为什么跌倒?这样我们才能学会自己站起来。生成Payload这里使用Pakages生成一个Payload。在菜单栏中依次选择命令,如图保持默认配置,选择监听器,勾选x64,点击generate,生成1.exe文件(这个可以用生成的python的payload编译成exe,可以免杀)然后选择1.exe文件和刚刚生成的1.ico......