史上最全!Selenium 录制脚本+八种元素定位方式+具体代码演示

话不多说,先附上练习的所有代码链接:
link.

引言.什么是自动化测试?

自动化测试,顾名思义就是利用一些工具或编程语言,通过录制或编程的方法,设定特定的测试场景,模拟用户业务使用项目的一个流程,以此自动寻找缺陷(自动寻找缺陷是有局限性的)。目前业内较为流行的商用自动化测试工具代表有 HP 公司的 Unified Function Testing 与 IBM 公司的 RFT ,开源自动化测试工具则以 Selenium、Jmeter、Appium 为代表。

Selenium,业内流行的开源Web自动化测试工具,直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 IE、Firefox、 Chrome 等 。

自动化测试的优点是:能够快速回归、脚本重用,从而替代人的重复活动。回归测试阶段,可利用自动化测试工具进行,无须大量测试工程师手动重复执行测试用例,极大的提高了工作效率。

自动化测试的缺点是:它们只能检查一些比较主要的问题,如崩溃、死机,但是却无法发现新的错误(人具有主观能动性,机器肯定代替不了人)。另外,自动化测试编写测试脚本工作量也很大,有时候该工作量甚至超过了手动测试的时间。

自动化测试不仅仅运用在系统测试层面,在单元测试、集成测试阶段同样可以使用自动化测试方法进行测试。此章节所述自动化主要是指 UI 层面的自动化测试。

一.selenium定义

Selenium 是 ThroughtWorks 公司一个强大的开源 Web 功能测试工具系列,支持多平台、多浏览器、多语言去实现自动化测试,Selenium2 将浏览器原生的 API 封装成 WebDriver API ,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作浏览器一样。

支持多种开发语言:ruby,python,java,perl,c# 等,同时 Selenium 测试直接自动运行在浏览器中,就像真正的用户在手工操作一样。支持的浏览器包括 IE, Chrome , firefox 等。

Selenium 已经从之前的 1.0(RC) 进化到了现在的 Selenium2 ( Selenium1+ 现在WebDriver)。

Selenium IDE 也将支持 WebDriver API ,包括将录制生成的测试
用例导出为 WebDriver 所支持的各种编程语言( Ruby、Python、C# 和 Java)

Selenium 实际上不是一个测试工具,而是一个工具集,其主要由三个核心组件构成: SeleniumIDE、Selenium RC (Remote Control )及Selenium Grid.

  • Selenium IDE: Selenium 开发测试脚本的集成开发环境,是 FireFox 的 一个插件,可以录制/回放用户的操作,生成测试用例(一个脚本),运行单个测试用例或测试用例集。
  • Selenium Remote Control ( RC远端控制平台 ) :支持多种平台(Windows、Linux) 和多种浏览器(IE、FireFox、Opera、Safari), 可以用多种语言(Java, Ruby, Python, Perl, PHP,C#) 编写测试用例。Selenium 为这些语言提供了不同的 API 及开发库,便于自动编译环境集成,从而构建高效的自动化测试框架。
  • Selenium Grid :允许 Selenium-RC 针对规模庞大的测试用例集或者需要在不同环境中运行的测试用例集进行扩展。这样,许多的测试集可以并行运行,从而提高测试效率(有点像多线程)。

Selenium 的历史:

  • Selenium 自 2004 年诞生以来,经历了三个版本的变化: Selenium 1.,Selenium 2 及 Selenium 3。Selenium 2 又称为 WebDriver ,WebDriver 对浏览器的支持需要对应框架开发工
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 PythonSelenium 库进行元素定位时,可以创建一个类来管理定位相关的操作。下面是一个示例代码: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class ElementLocator: def __init__(self, driver): self.driver = driver def find_element_by_id(self, element_id): return self.driver.find_element(By.ID, element_id) def find_element_by_xpath(self, xpath): return self.driver.find_element(By.XPATH, xpath) def wait_for_element_visible(self, locator, timeout=10): return WebDriverWait(self.driver, timeout).until(EC.visibility_of_element_located(locator)) # 可以添加其他常用的元素定位方法,比如 find_element_by_css_selector、find_element_by_class_name 等等 # 示例用法 driver = webdriver.Chrome() element_locator = ElementLocator(driver) element = element_locator.find_element_by_id("element_id") element.click() visible_element = element_locator.wait_for_element_visible((By.XPATH, "//div[@class='my-element']")) ``` 在上面的示例代码中,我们创建了一个名为 `ElementLocator` 的类,它接收一个 Selenium WebDriver 对象作为参数,并提供了一些常用的元素定位方法,比如 `find_element_by_id` 和 `find_element_by_xpath`。此外,还添加了一个 `wait_for_element_visible` 方法,用于等待元素可见。 你可以根据自己的需要扩展 `ElementLocator` 类,添加其他常用的元素定位方法,以便于在测试或爬虫等场景中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值