自动化测试2:selenium常用API

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

目录

1.webdirver API

1.1.定位元素

1.2CSS

1.语法

2,使用

1.3XPath定位

1.语法

2.使用

2.操作测试对象

2.1.鼠标点击与键盘输入

2.2submit 提交表单

2.3text 获取元素文本

3.添加等待

3.1.sleep休眠

3.2.智能等待

3.2.1.隐式等待

3.2.2显示等待

4.打印信息

4.1打印url

4.2打印title

5.浏览器的操作

5.1浏览器前进,后退

5.2浏览器滚动条操作

5.3浏览器最大化

5.4设置浏览器宽、高

5.5关闭浏览器

6.键盘事件

7.鼠标事件

8.定位一组元素

9.多层框架/窗口定位

9.1多层框架的定位

9.2多层窗口定位

9.3窗口切换

10.下拉框处理

11.alert弹窗,confifirm、prompt 的处理

12.上传文件操作

13.截图


1.webdirver API

1.1.定位元素

通过定位找到对象

webdriver 提供了一系列的对象定位方法,常用的有以下几种

  • id
  • name
  • class name
  • link text
  • partial link text
  • tag name
  • xpath
  • css selector

1.2CSS

1.语法

  • id选择器:# id
  • 类选择器:.class
  • 标签选择器:标签名
  • 后代选择器:父级选择器,子级选择器
webDriver.findElement(By.cssSelector(""));
CSS的获取可以用chrome的F12开发者模式中Element-右键-copy-copy selector来获取

2,使用

自动化测试2:selenium常用API

 

//打开百度首页
webDriver.get("https://www.baidu.com");
//找到百度搜索输入框
WebElement element=webDriver.findElement(By.cssSelector(".s_ipt"));
//输入软件测试
element.sendKeys("软件测试");

1.3XPath定位

1.语法

2.使用

XPATH的获取可以用chrome的F12开发者模式中Element-右键-copy-copy xpath来获取

自动化测试2:selenium常用API

 粘贴到代码中

webDriver.get("https://www.baidu.com/");
       WebElement element= webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
       element.sendKeys("软件测试");

css选择器定位比xpath效率高

private static void test01() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
       WebElement element= webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
       element.sendKeys("软件测试");
       webDriver.findElement(By.cssSelector("#su")).click();
       sleep(3000);
       int flag=0;
       List<WebElement> elements=webDriver.findElements(By.cssSelector("a em"));
        for (int i = 0; i < elements.size(); i++) {
            if(elements.get(i).getText().equals("测试")){
                flag=1;
                System.out.println("测试通过");
                break;
            }
        }
        if(flag==0){
            System.out.println("测试不通过");
        }
    }

2.操作测试对象

  • click 点击对象
  • sendKeys 在对象上模拟按键输入
  • clear 清除对象输入的文本内容
  • submit 提交 (form)
  • text 用于获取元素的文本信息

2.1.鼠标点击与键盘输入

sendKeys() 在对象上模拟按键输入

    element.sendKeys("软件测试");

2.2submit 提交表单

submit()

webDriver.findElement(By.xpath("//a[text()=\"新闻\"]")).submit();

 报错,必须是form表单的元素

自动化测试2:selenium常用API

 

2.3text 获取元素文本

getText()

    String button_value=webDriver.findElement(By.cssSelector("#su")).getText();
 private static void test02() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        sleep(3000);
        //输入框输入java
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("java");
        sleep(3000);
        //点击按钮
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        //清空输入框数据
        webDriver.findElement(By.cssSelector("#kw")).clear();
        sleep(3000);
        //获取元素
        String button_value=webDriver.findElement(By.cssSelector("#s_tab > div > b")).getText();
        if(button_value.equals("网页")){

            System.out.println("测试通过");
        }else{

            System.out.println("测试不通过");
        }
    }

3.添加等待

3.1.sleep休眠

强制休眠

sleep(休眠时间);

3.2.智能等待

3.2.1.隐式等待

在设置的超时时间内不断查找元素,直到找到元素为止

webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.DAYS);

3.2.2显示等待

等待直到找到某个条件满足再执行后面的代码

WebDriverWait driverWait=new WebDriverWait(webDriver,5);
//等待页面元素在页面中存在
driverwait.until(ExpectedConditions.presenceOfElementLocated(by));
//等待页面元素在页面中存在并可见
driverWait.until(ExpectedConditions.visibilityOfElementLocated(by));
//等待页面元素在页面中可被点击
driverWait.until(ExpectedConditions.elementToBeClickable(by));

区别:

隐式等待 (所有的元素)

页面所有的元素都加载后,后面的代码才会执行

例如:设置3s 3s后没有加载出来就会报错

显示等待 (一定的条件)

等待的是后面的条件,只要条件加载出来就不会报错

注:

1.显式等待和隐式等待不可一起使用;

2.显式等待或隐式等待只是等待找到元素,有些元素操作不一定可以执行成功,可能需要加上硬性等待;

3.隐式等待或显式等待一般会结合硬性等待一起使用

4.打印信息

4.1打印url

String url=webDriver.getCurrentUrl();

4.2打印title

String title=webDriver.getTitle();
private static void test03() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https:/www.baidu.com/");
        String url=webDriver.getCurrentUrl();
        String title= webDriver.getTitle();
        if(url.equals("https://www.baidu.com/") && title.equals("百度一下,你就知道")){
            System.out.println("测试通过");
        }else{
            System.out.println("测试不通过");
        }
    }

5.浏览器的操作

5.1浏览器前进,后退

//前进

webDriver.navigate().forward();

//后退

webDriver.navigate().back();

5.2浏览器滚动条操作

//浏览器滚动条到最顶端

document.documentElement.scrollTop=0

//浏览器滚动条到最底端

document.documentElement.scrollTop=0

((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000"

5.3浏览器最大化

webDriver.manage().window().maximize();

5.4设置浏览器宽、高

webDriver.manage().window().setSize(new Dimension(600,1000));

5.5关闭浏览器

webDriver.quit(); 关闭了整个浏览器 清空缓存

webDriver.close(); 关闭了当前页面 不会清空缓存

private static void test04() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        //搜索521
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("521");
        //点击百度一下
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        //浏览器后退
        webDriver.navigate().back();
        sleep(3000);
        //浏览器前进
        webDriver.navigate().forward();
        sleep(3000);
        //滚动条移动
        ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
        sleep(3000);
        //浏览器最大化最大化
        webDriver.manage().window().maximize();
        sleep(3000);
        //浏览器全屏
        webDriver.manage().window().fullscreen();
        sleep(3000);
        //设置固定固定宽高的像素比
        webDriver.manage().window().setSize(new Dimension(600,1000));
        sleep(3000);
        //浏览器关闭
        webDriver.quit();
    }

6.键盘事件

要使用键盘按键,必须引入keys 包:

from selenium.webdriver.common.keys import Keys

通过sendKeys()调用按键:

sendKeys(Keys.TAB) # TAB

sendKeys(Keys.ENTER) # 回车

sendKeys(Keys.SPACE) #空格键

sendKeys(Keys.ESCAPE) #回退键(Esc)

sendKeys(Keys.CONTROL,"A");//全选

sendKeys(Keys.CONTROL,"C");//复制

sendKeys(Keys.CONTROL,"X");//剪贴

sendKeys(Keys.CONTROL,"V");//粘贴

private static void test05() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A");
        sleep(3000);
        //control+X
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"X");
        sleep(3000);
        //control+V
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"V");
        sleep(3000);
    }

7.鼠标事件

要使用鼠标事件需要导入工具包:

from selenium.webdriver.common.action_chains import ActionChains

语法示例如下:

actions.moveToElement(webElement).doubleClick().perform();

ActionChains(driver):生成用户的行为。所有的行动都存储在actionchains 对象。通过perform()存储的行为。

moveToElement(element):移动鼠标到一个元素中,menu 上面已经定义了他所指向的哪一个元素

perform():执行所有存储的行为

ActionChains 类

  • contextClick() 右击
  • doubleClick() 双击
  • dragAndDrop() 拖动
  • moveToElement() 移动
WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("520");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        WebElement webElement=webDriver.findElement(By.cssSelector("#s_tab > div > a.s-tab-item.s-tab-pic"));
       sleep(3000);
        //鼠标右击
        Actions actions=new Actions(webDriver);
        sleep(3000);
        //移动         点击          执行(执行才有效果)
        actions.moveToElement(webElement).contextClick().perform();
        //双击
        actions.moveToElement(webElement).doubleClick().perform();

8.定位一组元素

定位一组元素

findElements 方法定位一组元素

定位一组对象一般用于以下场景:

  • 批量操作对象,比如将页面上所有的checkbox 都勾上
  • 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上所有的checkbox,然后选择最后一个

get_attribute:获得属性值。

将页面上所有的checkbox 都勾上

    private static void page01() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("http://localhost:63342/testcode/src/main/Page/test01.html?_ijt=n3vfl49h0creotpah99agp5an1&_ij_reload=RELOAD_ON_SAVE");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.DAYS);
        List<WebElement> webElements=webDriver.findElements(By.cssSelector("input"));
        for (int i = 0; i < webElements.size(); i++) {
            if(webElements.get(i).getAttribute("type").equals("checkbox")){
                webElements.get(i).click();
            }else{
                
            }
        }
    }

9.多层框架/窗口定位

对于一个web 应用,经常会出现框架(frame) 或窗口(window)的应用,这也就给我们的定位带来了一定的困难。

  • 定位一个frame :switchTo().frame(name_or_id_or_frame_element)
  • 定位一个窗口window:switchTo().Window(name_or_id_or_frame_element)

9.1多层框架的定位

switchTo().frame(name_or_id_or_frame_element):通过frame的id或者name或者frame自带的其它属性来定位框架,这里switch_to.frame()把当前定位的主体切换了frame里。

switchTo().defaultContent:从frame中嵌入的页面里跳出,跳回到最外面的默认页面中

自动化测试2:selenium常用API

 

private static void page02() {
    WebDriver webDriver=new ChromeDriver();
    webDriver.get("http://localhost:63342/testcode/src/main/Page/test02.html?_ijt=j75ebdth230d15j0qvnaoo4n1l&_ij_reload=RELOAD_ON_SAVE");
    webDriver.switchTo().frame("f1");
    webDriver.findElement(By.cssSelector("body > div > div > a")).click();

}

9.2多层窗口定位

定位一个窗口window:switchTo().Window(name_or_id_or_frame_element)

9.3窗口切换

webDriver.getWindowHandles()-->handles得到所有句柄

通过for语句得到最后一个句柄

定位到最后一个句柄的位置

找元素-->点击

  WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();
        sleep(4000);
        System.out.println(webDriver.getWindowHandle());
        Set<String> handles =webDriver.getWindowHandles();
        String target_handle="";
        for(String handle:handles){
            target_handle=handle;
        }
        webDriver.switchTo().window(target_handle);
        sleep(3000);
        //在get的页面找元素-->直接找找不到
        webDriver.findElement(By.cssSelector("#ww")).sendKeys("新闻联播");
        webDriver.findElement(By.cssSelector("#s_btn_wr")).click();

10.下拉框处理

Select select=new Select(webElement);
    select.selectByIndex(i);//对应第i个-->0开始
    select.selectByValue("对应的值");

自动化测试2:selenium常用API

 

private static void page03() {
    WebDriver webDriver=new ChromeDriver();
    webDriver.get("http://localhost:63342/testcode/src/main/Page/test03.html?_ijt=pmiabij44bq124bvmtsv40pr07&_ij_reload=RELOAD_ON_SAVE");
    WebElement webElement= webDriver.findElement(By.cssSelector("#ShippingMethod"));
    Select select=new Select(webElement);
    //select.selectByIndex(3);//对应第四个-->0开始
    select.selectByValue("12.51");
}

11.alert弹窗,confifirm、prompt 的处理

text 返回alert/confirm/prompt 中的文字信息

webDriver.switchTo().alert().accept 点击确认按钮

webDriver.switchTo().alert().dismiss 点击取消按钮,如果有的话

webDriver.switchTo().alert().sendKeys 输入值,如果alert 没有对话框就不能用了,不然会报错

注意:switchTo().alert()只能处理原生的alert

private static void page04() throws InterruptedException {
    WebDriver webDriver=new ChromeDriver();
    webDriver.get("http://localhost:63342/testcode/src/main/Page/test04.html?_ijt=mlrmi5odqr1g0io83gg78rkth2&_ij_reload=RELOAD_ON_SAVE");
    webDriver.findElement(By.cssSelector("button")).click();
    sleep(3000);
    //alert弹窗取消
    webDriver.switchTo().alert().dismiss();
    sleep(3000);
    //点击按钮
    webDriver.findElement(By.cssSelector("button")).click();
    //在alert弹窗中输入
    webDriver.switchTo().alert().sendKeys("KYF");
    sleep(3000);
    //确认
    webDriver.switchTo().alert().accept();
}

12.上传文件操作

自动化测试2:selenium常用API

 input标签,sendKeys选择要上传文件的路径

private static void page05() {
    WebDriver webDriver=new ChromeDriver();
    webDriver.get("http://localhost:63342/testcode/src/main/Page/test05.html?_ijt=49bp7ac1l8m2m51ub5j1l21gkq&_ij_reload=RELOAD_ON_SAVE");
    webDriver.findElement(By.cssSelector("input")).sendKeys("D:\\D桌面\\gitee\\test");

}

13.截图

中央仓库--common-io 得到依赖文章来源地址https://www.toymoban.com/news/detail-490895.html

private static void test12() throws InterruptedException, IOException {
    WebDriver webDriver=new ChromeDriver();
    webDriver.get("https://www.baidu.com/");
    webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
    webDriver.findElement(By.cssSelector("#su")).click();
    sleep(3000);
    File file=((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(file,new File("D://1.png"));
}

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

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

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

相关文章

  • web自动化测试系列之selenium的运行原理和常用方法介绍(二)

    web自动化测试系列之selenium的运行原理和常用方法介绍(二)

    在上文中我们编写了一段简单的代码 ,可以驱动浏览器访问百度并搜索 。这里我们再把这段代码再拿来加以说明 。 如果你是初次接触它 ,你可能会想 ,这段代码是怎么驱动浏览器运行的了 ?要知道这个问题的答案 ,就必须搞清楚以下3个问题 。 它(selenium)的运行原

    2024年04月11日
    浏览(21)
  • 浏览器常用基本操作之python3+selenium4自动化测试(基础篇)

    浏览器常用基本操作之python3+selenium4自动化测试(基础篇)

    1、打开指定的网页地址 我们使用selenium进行自动化测试时,打开浏览器之后,第一步就是让浏览器访问我们指定的地址,可使用get方法实现 1 2 3 from selenium import webdriver driver = webdriver.Edge() driver.get( \\\'https://www.baidu.com/\\\' )   # 本行用于访问指定的地址 2、获取当前页面url 我们在

    2024年02月01日
    浏览(48)
  • 『App自动化测试之Appium应用篇』| 继承于selenium常用的元素定位方法有哪些?如何使用?

    『App自动化测试之Appium应用篇』| 继承于selenium常用的元素定位方法有哪些?如何使用?

    在了解元素等位前,我们先了解下 app 的一些类型,只有了解这些 app 的类型才能针对性的选择元素定位方法; 因为不同类型的app的定位方式可能存在差异性; 我们了解到 APP 可以分为原生 APP 、 Web APP 、混合 APP 。 而原生 APP 是基于 Android 或 iOS 平台官方的语言、类库、工具

    2024年02月03日
    浏览(15)
  • Robot Framweork之UI自动化测试---Selenium2Library常用关键字

    Robot Framweork之UI自动化测试---Selenium2Library常用关键字

    在项目实际自动化测试过程中,主要用到了Selenium2Library库里的一些和内置包BuiltIn的,今天我们就来分享下Selenium2Library常用。 我们把操作主要分为六大类: 一)浏览器操作 二)文本输入 三)点击操作 四)选择/取消选择 五)检查点 六)其他 插播一个小

    2024年02月14日
    浏览(12)
  • Selenium自动化测试实战之自动化测试基础

    Selenium自动化测试实战之自动化测试基础

    自动化测试概念 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程。 自动化只是测试方式,跟测试阶段无关。 可以把任何测试工作写一个程序自动化实现都可以称为自动化测试。 selenium自动化测试: 2023最新的Selenium自动化测试实战,没有比

    2024年02月13日
    浏览(14)
  • selenium 自动化测试—如何搭建自动化测试环境?

    selenium 自动化测试—如何搭建自动化测试环境?

    🍅 视频学习: 文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,

    2024年02月19日
    浏览(16)
  • 【自动化测试】Java+Selenium自动化测试环境搭建

    【自动化测试】Java+Selenium自动化测试环境搭建

    本主要介绍以Java为基础,搭建Selenium自动化测试环境,并且实现代码编写的过程。 1.Selenium介绍 Selenium 1.0 包含 core、IDE、RC、grid 四部分,selenium 2.0 则是在两位大牛偶遇相互沟通决定把面向对象结构化(OOPP)和便于编写代码的各自思想予以整合后形成的新工具,也就是我们所

    2024年02月11日
    浏览(8)
  • JavaScript+Selenium自动化测试_selenium和js能一起做自动化测试

    JavaScript+Selenium自动化测试_selenium和js能一起做自动化测试

    var webdriver = require(‘selenium-webdriver’), By = webdriver.By, until = webdriver.until; var driver = new webdriver.Builder() .forBrowser(‘chrome’) .build(); driver.get(‘https://www.baidu.com’); driver.findElement(By.id(‘kw’)).sendKeys(‘webdriver’); driver.findElement(By.id(‘su’)).click(); driver.wait(until.titleIs(‘webdriver_百度

    2024年04月25日
    浏览(13)
  • API自动化测试是什么?我们该如何做API自动化测试呢?

    API自动化测试是什么?我们该如何做API自动化测试呢?

     API测试已成为日常的测试任务之一,为了提高测试效率,减少重复的手工操作,API自动化测试也逐渐变得愈加重要,本文是自己在API自动化测试方面的一些经验积累和心得、汇总成文,以飨读者 我相信自动化技能已经成为高级测试工程师总体技能的标配。敏捷和持续测试破

    2024年02月01日
    浏览(13)
  • 自动化测试介绍、selenium用法(自动化测试框架+爬虫可用)

    自动化测试介绍、selenium用法(自动化测试框架+爬虫可用)

    1、什么是自动化测试? 程序测试程序、代码代替思维、脚本代替人工 核心:质量和效率 作用:降低成本、节省人力时间、推动CI和DevOps、准确性和可靠性、模拟人工难以实现的手段、快速持续迭代发布能力、衡量产品的质量、提升测试效率、提高测试覆盖率 2、手工测试

    2024年03月08日
    浏览(18)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包