如何用flashfxp通过ftp访问网站服务器下载网站代码,多语言版本的网站,dns设置 看国外网站,番禺市桥网站建设公司目录 前言
一、Web 自动化测试
1.什么是 Web 自动化测试
2.驱动
3.安装驱动管理
二、Selenium
1.简单 web 自动化测试示例
2.工作原理
三、元素定位
1.cssSelector
2.XPath
四、操作测试对象
1.点击/提交对象
2.模拟按键输入
3.清除文本内容
4.获取文本信息
5.…目录 ·前言
一、Web 自动化测试
1.什么是 Web 自动化测试
2.驱动
3.安装驱动管理
二、Selenium
1.简单 web 自动化测试示例
2.工作原理
三、元素定位
1.cssSelector
2.XPath
四、操作测试对象
1.点击/提交对象
2.模拟按键输入
3.清除文本内容
4.获取文本信息
5.获取当前页面标题
6.获取当前页面的 URL
·总结 ·前言 自动化是指自动的代替人的行为完成操作自动化在生活中可以说是随处可见如自动洒水机、自动洗手液等这些生活中的自动案例有效的减少了我们人力的消耗同时也提高了我们的生活质量在我们软件中的自动化测试也是如此通过自动化测试可以有效减少人力的消耗同时提高测试的质量和效率本篇文章将会介绍自动化测试的一些基础知识和一些自动化测试中常用的函数那么就开始本篇文章的内容介绍吧。
一、Web 自动化测试 自动化也分为接口自动化和 UI 自动化其中UI 自动化还可以分为 Web 自动化、移动端自动化等在我们下面的内容介绍都是在介绍 Web 自动化测试。
1.什么是 Web 自动化测试 比如在我们使用 CSDN 进行搜索时通常需要我们先输入 CSDN 的网址进入 CSDN 界面然后找到搜索框输入我们要搜索的信息来进行搜索如下图所示 Web 自动化就可以代替我们自动的执行以上的过程Web 自动化测试就是模拟人在浏览器上的操作行为自动的打开浏览器访问 CSDN 首页并进行一系列的搜索和验证等行为。
2.驱动 上面介绍了 Web 自动化测试的第一步是要打开浏览器通过访问浏览器界面进行一系列的操作对于我们手工测试来说这一系列的操作需要我们手动的一步一步的来执行对于我们自动化程序来说我们编写的自动化程序又要如何打开我们的浏览器并执行我们预期的操作流程呢这就需要说到驱动了。 驱动这词应用比较广泛比如汽车就是有了驱动才能跑起来的在我们计算机上也是这样计算机有了驱动程序才能与设备如耳机、摄像头、麦克风、键盘、显示器、鼠标等进行通信我们要想使我们编写的自动化程序打开 Web 浏览器与浏览器进行通信也就需要安装 Web 驱动程序即WebDriverWebDriver 是以本地化的方式驱动浏览器的驱动程序。
3.安装驱动管理 介绍完什么是驱动及 WebDriver 后我们就来安装一下 Web 驱动程序吧在 Java 中有一个开源的库WebDriverManager它是以完全自动化的方式对 Selenium WebDriver 所需的驱动程序如Chromedriver、geckodriver等进行管理即下载、设置、维护既然 Java 中提供了这样开源的库那么我们安装驱动管理就十分简单了只需要创建一个项目使用 Maven 来管理添加依赖把 WebDriverManager 引入即可添加依赖代码如下 dependencygroupIdio.github.bonigarcia/groupIdartifactIdwebdrivermanager/artifactIdversion5.8.0/versionscopetest/scope/dependency
二、Selenium 进行完上述的工作后接下来就是使用 Selenium 来编写 Web 自动化测试脚本了Selenium 是一个 Web 自动化测试工具Selenium 中提供了丰富的方法供给我们来进行 Web 自动化测试。
1.简单 web 自动化测试示例 在编写代码之前我们要先安装 Selenium 库这也是 Java 中一个开源的库所以我们之间在 pom.xml 中添加依赖即可添加依赖代码如下 dependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-java/artifactIdversion4.0.0/version/dependency 下面我们就来利用 Selenium 编写一段简单的 Web 自动化测试的代码这里我们要做的事情是打开浏览器使用百度搜索彭于晏具体的代码及详细介绍如下所示
public class Test {// 测试百度搜索关键词: 彭于晏void searchTest() throws InterruptedException {// 1. 创建驱动对象, 打开浏览器WebDriverManager.chromedriver().setup();// 2.增加浏览器配置, 创建驱动对象要强制指定允许访问所有链接ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);WebDriver webDriver new ChromeDriver(options);// 3. 输入完整的网址: https:www.baidu.comwebDriver.get(https://www.baidu.com/);// 4. 找到输入框, 并输入关键词: 彭于晏webDriver.findElement(By.cssSelector(#kw)).sendKeys(彭于晏);// 休眠 3 秒,观察效果Thread.sleep(3000);// 5. 找到 百度一下 按钮, 并点击webDriver.findElement(By.cssSelector(#su)).click();// 休眠 3 秒,观察效果Thread.sleep(3000);// 6. 关闭浏览器webDriver.quit();}
} 我们使用 Test 类来编写测试方法额外再创建一个 RunTest 类来运行我们的测试方法代码及运行结果如下所示
public class RunTest {public static void main(String[] args) throws InterruptedException {Test test new Test();test.searchTest();}
} 上述执行过程中我鼠标只进行点击运行的操作剩下都是自动化程序自动帮我们做的事。 2.工作原理 实现 Web 自动化测试需要浏览器、浏览器驱动、Selenium 自动化脚本这三者是如何交互最终实现 Web 的自动化测试的呢如下图所示 具体步骤如下 通过 Selenium 编写的自动化脚本代码中在 ChromeDriverService 中创建一个服务通过创建好的服务打开 WebDriver该服务地址为 Selenium 向 WebDriver 发送请求的服务地址向浏览器驱动程序发送 HTTP 请求浏览器驱动程序解析请求打开浏览器并获得 sessionid如果再次对浏览器操作需要携带此 id打开浏览器后所有的 Selenium 的操作如访问地址、查找元素等均通过创建好的服务连接到 WebDriver然后使用 execute 发送请求驱动收到请求并对请求进行解析转成浏览器能够解析的脚步并发送给浏览器浏览器通过请求的内容执行对应动作浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。 在我们刚才执行的 Selenium 编写的自动化脚本代码中我们可以在终端看见创建的驱动服务地址如下图所示
三、元素定位 我们在进行 Web 自动化测试的操作核心就是能够找到页面对应的元素然后才能对元素进行具体的操作。常见的元素定位方式有很多如id、classname、tagname、XPath、cssSelector其中常用的主要是 cssSelector 和 XPath。
1.cssSelector 选择器的功能是选中页面中指定的标签元素选择器的种类分为基础选择器和复合选择器常见的元素定位方式可以通过 id 选择器和子类选择器来进行定位我们上面编写的自动化测试代码中是如何定位到搜索框与“百度一下”按钮的呢定位的过程如下图所示 Copy 之后我们就可以定位到搜索框的位置了如下图所示 此时我们就可以在编写自动化测试代码中使用 “#kw” 来定位搜索框的元素并对其进行相应的操作了。
2.XPath 介绍完 cssSelector 定位元素的方式后其实 XPath 做的事情也是一样的XPath 是 XML 路径语言不仅可以在 XML 文件中查找信息还可以在 HTML 中选取节点XPath 使用路径表达式来选择 XML 文档中的节点在 XPath 语法中 “//*” 是获取 HTML 页面所有的节点如下图所示 使用 //[指定节点] 来获取 HTML 页面指定的节点如下图所示 使用 / 来获取一个节点中的直接子节点如下图所示 使用 [....] 可以实现节点属性的匹配如下图所示 当然XPath 也可以使用 cssSelector 中的方式来更便捷的生成如下图所示 手动复制的 selector / XPath 的表达式不一定满足唯一性的要求即复制的表达式会对应不同的多个元素这时就需要我们进行手动修改表达式使它可以唯一定位一个元素这就需要用到我们前面介绍的内容了。
四、操作测试对象 获取到了页面的元素之后我们就可以对元素进行操作了这里我们常见的操作有点击、提交、输入、清空、获取文本。
1.点击/提交对象 这里我们使用的函数是 click()具体使用代码如下所示
// 找到 百度一下 按钮, 并点击
driver.findElement(By.cssSelector(#su)).click();
2.模拟按键输入 这里我们使用的函数是 sendKeys()具体使用的代码如下所示
// 找到输入框, 并输入关键词: 彭于晏
driver.findElement(By.cssSelector(#kw)).sendKeys(彭于晏);
3.清除文本内容 当我们搜索完一条信息后想要再换一个关键词搜索直接调用 sendKeys() 函数可以吗我们来编写代码运行一下观察结果具体代码及运行结果如下所示
public class Test {WebDriver driver;void createDriver() {// 1. 创建驱动对象, 打开浏览器WebDriverManager.chromedriver().setup();// 2. 增加浏览器配置, 创建驱动对象要强制指定允许访问所有链接ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);driver new ChromeDriver(options);// 3. 输入完整的网址: https:www.baidu.comdriver.get(https://www.baidu.com/);}// 操作元素void test03() throws InterruptedException {createDriver();WebElement element driver.findElement(By.cssSelector(#kw));element.sendKeys(彭于晏);Thread.sleep(3000);element.sendKeys(古力娜扎);Thread.sleep(3000);driver.quit();}} 可以通过上面运行过程可以看出 想换一个关键词进行搜索直接使用 sendKeys() 函数的效果就是直接在原本的关键词后面拼接新关键词这显然是不科学的那么为了可以正确的切换搜索内容我们就要使用到 clear() 函数来清空我们先前搜索框的内容再使用 sendKeys() 来进行搜索具体代码及运行结果如下 void test03() throws InterruptedException {createDriver();WebElement element driver.findElement(By.cssSelector(#kw));element.sendKeys(彭于晏);Thread.sleep(3000);element.clear();element.sendKeys(古力娜扎);Thread.sleep(3000);driver.quit();} 4.获取文本信息 如何判断获取到的元素对应的文本是否符合预期呢我们可以使用 getText() 函数来把获取元素对应的文本信息进行打印来观察具体使用代码及运行结果如下所示
public class Test {WebDriver driver;void createDriver() {// 1. 创建驱动对象, 打开浏览器WebDriverManager.chromedriver().setup();// 2. 增加浏览器配置, 创建驱动对象要强制指定允许访问所有链接ChromeOptions options new ChromeOptions();options.addArguments(--remote-allow-origins*);driver new ChromeDriver(options);// 3. 输入完整的网址: https:www.baidu.comdriver.get(https://www.baidu.com/);}// 获取文本信息void test04() {createDriver();WebElement element driver.findElement(By.cssSelector(#hotsearch-content-wrapper li:nth-child(4) a span.title-content-title));System.out.println(元素文本信息为: element.getText());driver.quit();}
} 如上图所示获取文本信息正确。 这里我们要注意一点页面上展示的数据不全是文本数据比如 “百度一下” 按钮上的文字如下图所示 此时使用 getText() 函数是无法获取到的操作代码及运行结果如下所示 void test04() throws InterruptedException {createDriver();WebElement element driver.findElement(By.cssSelector(#su));System.out.println(获取百度一下按钮的文本信息: element.getText());driver.quit();} 显然没有获取到信息那么如何获取属性信息呢这就需要使用 getAttribute(属性名称) 函数来获取了具体代码及运行结果如下所示
void test04() throws InterruptedException {createDriver();WebElement element driver.findElement(By.cssSelector(#su));System.out.println(获取百度一下按钮的 value 属性值: element.getAttribute(value));driver.quit();} 5.获取当前页面标题 这里我们使用的函数是 getTitle()具体使用代码如下所示
// 获取当前页面标题
driver.getTitle();
6.获取当前页面的 URL 这里我们使用的函数是 getCurrentUrl()具体使用代码如下所示
// 获取当前页面的 URL
driver.getCurrentUrl(); 关于函数 getTitle() 与 getCurrentUrl() 的具体使用代码及运行结果如下所示 void test04() throws InterruptedException {createDriver();System.out.println(driver.getTitle());System.out.println(driver.getCurrentUrl());driver.quit();} ·总结 文章到这里就要结束了本篇文章介绍了一下自动化测试的基本概念与一些在 Selenium 中进行自动化测试脚本编写使用的常见函数文章作为自动化测试的第一篇文章主要是想带大家认识一下自动化测试并感受一下自动化测试的效果如果对文章内容有所疑惑欢迎在评论区进行留言如果感觉本篇文章还不错希望能收到你的三连支持那么我们下一篇文章再见吧~~~