Web自动化测试——selenium篇(一)

这篇具有很好参考价值的文章主要介绍了Web自动化测试——selenium篇(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在学习 Web 自动化测试的过程中,selenium 是其中的常用工具。除了其开源免费,包含丰富的 API 以外,它还支持多浏览器,多系统,多语言等等优点

一、环境准备

这里将使用Java语言,在谷歌浏览器(Chrome)下来进行 selenium 工具的使用。

想要开展自动化测试,首先要保证环境已经部署到位,包括 selenium 工具包,Chrome浏览器,Webdriver(Chromedriver 谷歌驱动),java版本至少为8

关于 selenium 工具包,在我们创建好一个 Maven 项目之后,就需要在 pom.xml 中引入依赖。完成后,一定要点开界面右上角的 Maven 按钮,点击刷新按钮进行刷新

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.0.0</version>
    </dependency>
</dependencies>

Chrome 浏览器记得在官方网页下载就行。

由于使用的是 Chrome 浏览器,那么我们使用的驱动得是谷歌驱动(Chromedriver),这个驱动的作用就是协助打开 Chrome 浏览器的,因为代码是没有办法自己直接打开浏览器,进行一系列操作的。

下载驱动的具体操作呢,首先要先查看一下 Chrome 浏览器的版本,浏览器右上角的三个点 ▶️ 帮助​ ▶️ 关于 Google Chrome

web自动化测试selenium,测试开发,selenium,chrome,测试工具,java

然后,进入下面的地址,选择与 Chrome 版本最接近的版本,点进去,下载驱动

链接:Chromedriver

web自动化测试selenium,测试开发,selenium,chrome,测试工具,java

下载完成后,将 chromedriver.exe 放到 C:\Program Files\Java\jdk1.8.0_192\bin 目录下(默认情况下)

PS:最好停止浏览器自动更新的功能,不然版本更新后,又需要下载新的驱动

具体操作,控制面板 ▶️ 管理工具 ▶️ 服务 ▶️ ​Google更新服务禁用(右击属性设置)

web自动化测试selenium,测试开发,selenium,chrome,测试工具,java

二、Web 自动化测试 Demo

主要内容就是打开浏览器,打开百度网页,在搜索框中输入搜索关键词,点击 “百度一下“ 搜索按钮,查看到搜索结果内容,关闭浏览器

public class Test1 {
    //创建出一个驱动对象来
    private ChromeDriver driver = new ChromeDriver();
    //自动化测试前必须的操作:打开网址
    public void startTest() {
        driver.get("https://www.baidu.com/");
    }
    public void demoTest() throws InterruptedException {
        Thread.sleep(1000);//等待1秒,为了更方便的查看测试状态
        //找到 id 为 "kw" 的元素(百度输入框),然后往该元素中填充搜索词 "巴巴"
        driver.findElement(By.id("kw")).sendKeys("巴巴");
        Thread.sleep(1000);
        //找到 id 为 "su" 的元素('百度一下'按钮),然后点击一下
        driver.findElement(By.id("su")).click();
        Thread.sleep(1000);
    }
    //自动化测试后必须的操作:释放掉驱动对象,浏览器关闭
    public void endTest() {
        driver.quit();
    }
}

调用测试方法类

public class RunTest {
    public static void main(String[] args) throws InterruptedException {
        Test1 test1 = new Test1();
        test1.startTest();	//测试准备
        test1.demoTest();	//测试 ing
        test1.endTest();	//测试收尾
    }
}

三、元素定位常用方法

在上面的测试 Demo 中就已经举例出了一种元素定位方法——By.id()【通过id

除此外还有通过 cssSelector,xpath,tagName,className,name,partialLinkText,linkText

//一、id 定位(全局唯一,可定位成功)
driver.findElement(By.id("kw"));
//二、cssSelector 定位(唯一,可定位成功)
driver.findElement(By.cssSelector("#kw"));
//三、xpath 定位(唯一,可定位成功)
driver.findElement(By.xpath("//*[@id=\"kw\"]"));
//四、tagName 定位(标签名不唯一性大,定位失败率高)
driver.findElement(By.tagName("input"));
//五、className 定位(不唯一性大,定位失败率高)
driver.findElement(By.className("s_ipt"));
//六、name 定位(有定位失败的可能)
driver.findElement(By.name("wd"));
//七、linkText 定位(链接名定位)
driver.findElement(By.linkText("hao123"));
//八、partialLinkText 定位(部分链接名定位)
driver.findElement(By.partialLinkText("123"));

定位元素时,一定要保证元素能够找到且唯一,否则定位失败

web自动化测试selenium,测试开发,selenium,chrome,测试工具,java

四、元素定位失败可能原因

原因一:定位的方式不唯一,或者根本就没与该元素

检查该元素是否可定位,可通过F12的console标签通过document.querySelector() 的方法定位,可验证是否能找到元素

原因二:如果使用 cssSelector 或者 xpath 的话,其定位方式错误

按下F12,ctrl+f,把要检查的 cssSelector 输入,看能否只定位到一个元素。

原因三:页面还没有加载完成,就开始定位元素

一般来说,代码执行的速度比页面渲染速度要快。代码执行到了,但目标元素在页面中还没有渲染出来导致没法定位到目标元素,因此需要合理使用元素等待

原因四:元素没有达到可见的条件

比如目标元素需要鼠标悬停或者单击页面上的某个元素或者需要需要滚动条下拉才能找到。或者还有可能,需要定位的元素在新的窗口中,但是还没有打开新的窗口,需要切换到新窗口才可以找到目标元素。还有可能某些元素本来就是不可见的,比如 display 属性为 none,这就需要通过 JavaScript 修改 display 的值

原因五:存在表单嵌套

顺着定位元素往上找,查看是否有 <iframe> 标签,找到说明要定位此元素,需先切换到此表单,再定位元素。

五、测试对象操作

5.1 click 点击对象

driver.findElement(By.partialLinkText("123")).click();

5.2 send_keys 按键输入

driver.findElement(By.id("kw")).sendKeys("巴巴");

5.3 clear 清除输入

driver.findElement(By.id("kw")).clear();

5.4 submit 提交表单

driver.findElement(By.id("su")).submit();

click 和 submit 都可以操作按钮,不同的是,click 可以点击页面中的任何元素,但可以 click 的地方不一定可以 submit ,所以一般使用 click 就行

5.5 getText 文本获取

String str = driver.findElement(By.partialLinkText("123")).getText();
System.out.println(str);

获取的文本是不包含在标签内的,标签中的 value 值指的是 value 的属性值

5.6 getAttribute 属性值获取

String str1 = driver.findElement(By.id("su")).getAttribute("type");
String str2 = driver.findElement(By.id("su")).getAttribute("value");
String str3 = driver.findElement(By.id("su")).getAttribute("id");
String str4 = driver.findElement(By.id("su")).getAttribute("class");
System.out.println("type:"+str1+" value:"+str2+" id:"+str3+" class:"+str4);

web自动化测试selenium,测试开发,selenium,chrome,测试工具,java

六、等待操作

在元素定位失败的原因中有提到过,代码的执行速度比页面渲染的速度快,如果目标元素还没渲染出来,代码就已经执行到了,就会导致找不到目标元素,所以等待的操作是非常有必要的

强制等待

Thread.sleep(1000);

参数是强制等待的时间,单位是毫秒,用法非常简单。指定多少时间就会让程序暂停多少时间,等待时间结束后才会继续执行下一步,方便调试查看测试过程。但固定的等待时间导致测试时间过长,降低测试效率

隐式等待

public void waitTest() {
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
    //隐式等待,设置等待的时间为 2,单位为秒
    driver.findElement(By.id("kw")).sendKeys("狗狗");
    driver.findElement(By.id("su")).click();
    driver.findElement(By.xpath("//*[@id=\"5\"]/div/div/h3/a")).click();
}

隐式等待指的是在自己设置的这段时间内,不停的等待目标元素出现,如果在时间范围内始终没有出现,就会抛出找不到元素异常(NoSuchElementException)。并且隐式等待作用范围为整个 Webdriver 生命周期,所以放在哪里影响不大,只要没退出浏览器就一直存在。

和强制等待相比,无疑是节省了很多的时间

显示等待

隐式等待有个缺点,那就是需要等待所有的元素都展现出来了才会执行下一步。与之相比,显示等待的优点就是针对某个元素进行等待,不需要等到所有元素都渲染好,目标元素出现就可以结束了,进一步提高测试效率,但是写法相较于前两种来说更为复杂。

public void waitTest() {
    driver.findElement(By.id("kw")).sendKeys("狗狗");
    driver.findElement(By.id("su")).click();
    //创建一个显示等待的对象,初始化时传入两个参数,一个是驱动对象,另一个是等待时间
    WebDriverWait wait = new WebDriverWait(driver,Duration.ofSeconds(3));
    //在规定时间内不停寻找目标元素
    //结束的契机就是until括号内的条件满足,即目标元素已经被找到了,没找到就抛出异常
    wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id=\"5\"]/div/div/h3/a"))).click();
}

PS:隐式等待和显示等待不要放在一起使用,不然实际等待的时间将没有办法预期文章来源地址https://www.toymoban.com/news/detail-816435.html

七、信息打印

public void printTest() {
    String title = driver.getTitle();		//获取网址标题
    String url = driver.getCurrentUrl();	//获取网址 url
    System.out.println("title:"+title+"  url:"+url);
}

到了这里,关于Web自动化测试——selenium篇(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web自动化测试--selenium

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! Selenium 是支持web浏览器自动化的一系列工具和库的综合项目,能够进

    2024年03月14日
    浏览(68)
  • selenium - web 自动化测试

    有效的减少人力的消耗, 同时提高生活的质量. 通过自动化测试有效减少人力的投入, 同时提高了测试的质量和效率. 测试人员有个环节叫做回归测试. 回归测试 : 对历史版本, 历史功能进行测试, 保证功能都是符合要求的. 为什么需要回归测试历史版本 ? 因为新版本和旧版本一般

    2024年02月04日
    浏览(43)
  • Web自动化测试——selenium的使用

    ⭐️ 前言 ⭐️ 本篇文章就进入了 自动化测试 的章节了,如果作为一名测试开发人员,非常需要掌握自动化测试的能力,因为它不仅能减少人力的消耗,还能提升测试的效率。 🍉 欢迎点赞 👍 收藏 ⭐ 留言评论 📝 私信必回哟 😁 🍉 博主将持续更新学习记录收获,友友们

    2024年02月01日
    浏览(52)
  • Selenium Web自动化测试框架实践

    目录        前言: 项目背景 功能实现 项目架构 浏览器driver定义 用例运行前后的环境准备工作 工具方法模块 Pageobject页面对象封装 执行测试用例        前言:          Selenium是一个基于Web的自动化测试框架,可以通过模拟用户在浏览器上的操作,来自动化地测试Web应

    2024年02月10日
    浏览(62)
  • Web自动化测试——selenium篇(一)

    在学习 Web 自动化测试的过程中,selenium 是其中的常用工具。除了其开源免费,包含丰富的 API 以外,它还支持多浏览器,多系统,多语言等等优点 这里将使用 Java 语言,在 谷歌浏览器(Chrome) 下来进行 selenium 工具的使用。 想要开展自动化测试,首先要保证环境已经部署到

    2024年01月23日
    浏览(62)
  • selenium-web自动化测试

    步骤一:查看自己的谷歌浏览器版本(浏览器版本和驱动版本一定要对应) 步骤二:下载对应的驱动包, 下载路径 : ChromeDriver - WebDriver for Chrome - Downloads (chromium.org)   注意步骤二中, 只要保持 115.0.5790 一致即可, 最后一位数字我选择102(网页110下载不了所以选择102) 步骤三:解

    2024年02月12日
    浏览(47)
  • Web自动化测试 Selenium 1/3

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 在这里,我还想说一下关于 Selenium 名字的来源,很有意思的 :  :

    2024年03月11日
    浏览(46)
  • 【自动化测试】基于Selenium + Python的web自动化框架

    Selenium是一个基于浏览器的自动化工具,她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:  1、Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,p

    2024年02月07日
    浏览(78)
  • Web 自动化测试(Selenium) PO 模型

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 1. po 模型介绍 在自动化中,Selenium 自动化测试中有一个名字经常被提

    2024年04月13日
    浏览(35)
  • Web自动化测试:Selenium入门到精通

    说到自动化测试,就不得不提大名鼎鼎的Selenium。Selenium 是如今最常用的自动化测试工具之一,支持快速开发自动化测试框架,且支持在多种浏览器上执行测试。 Selenium学习难度小,开发周期短。对测试人员来说,如果你编程经验不足,python + Selenium 是个很好的选择。语法简

    2024年02月03日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包