国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【軟件測(cè)試】自動(dòng)化測(cè)試selenium

這篇具有很好參考價(jià)值的文章主要介紹了【軟件測(cè)試】自動(dòng)化測(cè)試selenium。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、什么是自動(dòng)化測(cè)試

二、Selenium介紹

1、Selenium是什么

2、Selenium的原理

三、了解Selenium的常用API

1、webDriver API??

1.1、元素定位

1.1.1、CSS選擇器

1.1.2、Xpath元素定位

1.1.3、面試題

?1.2、操作測(cè)試對(duì)象

1.3、添加等待?

1.4、打印信息

?1.5、瀏覽器的操作

1.6、鍵盤事件

1.7、鼠標(biāo)事件?

1.8、定位一組元素

1.9、多層框架/窗口定位

1.10、下拉框處理

1.11、彈窗處理

1.12、上傳文件操作

1.13、關(guān)閉瀏覽器操作

1.14、窗口的切換

1.15、截圖?



一、什么是自動(dòng)化測(cè)試

自動(dòng)化測(cè)試指軟件測(cè)試的自動(dòng)化,自預(yù)設(shè)下運(yùn)行應(yīng)用程序或者系統(tǒng),預(yù)設(shè)條件包括正常和異常,最后評(píng)估運(yùn)行結(jié)果。將認(rèn)為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的過程。

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

?自動(dòng)化測(cè)試包括UI自動(dòng)化、接口自動(dòng)化、單元測(cè)試自動(dòng)化。按照這個(gè)金字塔模型來進(jìn)行自動(dòng)化測(cè)試規(guī)劃,可以產(chǎn)生最佳的自動(dòng)化測(cè)試產(chǎn)出投入比,可以用較少的投入獲得很好的收益。

?單元測(cè)試

最大的投入應(yīng)再單元測(cè)試上、單元測(cè)試運(yùn)行的頻率也更加高

Java的單元測(cè)試框架是Junit

?接口自動(dòng)化

接口測(cè)試就是API測(cè)試,相對(duì)于UI自動(dòng)化API自動(dòng)化更加容易實(shí)現(xiàn)、執(zhí)行起來也更穩(wěn)定。

接口自動(dòng)化有以下特點(diǎn)

  • 可在產(chǎn)品前期,接口完成后介入
  • 用例維護(hù)量小
  • 適合接口變動(dòng)較小,界面變動(dòng)頻繁的項(xiàng)目

?UI自動(dòng)化

雖然測(cè)試金字塔告訴我們盡量多做API層的自動(dòng)化測(cè)試,但是UI層的自動(dòng)化測(cè)試更加貼近用戶的需求和軟件系統(tǒng)的實(shí)際業(yè)務(wù)。并且有時(shí)候我們不得不進(jìn)行UI層的測(cè)試。

UI自動(dòng)化的特點(diǎn)

  • 用例維護(hù)量大
  • 頁面相關(guān)性強(qiáng)、必須后期項(xiàng)目頁面開發(fā)完成之后介入
  • UI測(cè)試適合與界面變動(dòng)較小的項(xiàng)目。

二、Selenium介紹

1、Selenium是什么

Selenium是用來做web自動(dòng)化測(cè)試的框架。Selenium提供了多種編程語言的綁定,包括Python、Java、C#、JavaScript等,使開發(fā)人員能夠使用自己熟悉的編程語言來編寫自動(dòng)化腳本。它還支持各種瀏覽器(Edge、Chrome),支持各種平臺(tái)(Linux、Windows、Mac),具有豐富的API。

2、Selenium的原理

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

自動(dòng)化腳本代碼、瀏覽器驅(qū)動(dòng)和瀏覽器之間的關(guān)系是,自動(dòng)化腳本代碼向?yàn)g覽器驅(qū)動(dòng)發(fā)起請(qǐng)求,驅(qū)動(dòng)操控瀏覽器執(zhí)行測(cè)試步驟,最終瀏覽器將結(jié)果返回給驅(qū)動(dòng),驅(qū)動(dòng)最終再將結(jié)果返回給自動(dòng)化程序。

三、了解Selenium的常用API

先來看一個(gè)完整的瀏覽器搜索框的測(cè)試

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.List;

import static java.lang.Thread.sleep;

public class Main {
    public static void main(String[] args) throws InterruptedException {
        int flag = 0;
        //創(chuàng)建ChromeOptions對(duì)象,用于配置Chrome瀏覽器啟動(dòng)選項(xiàng)
        ChromeOptions options = new ChromeOptions();
        //允許所有請(qǐng)求
        options.addArguments("--remote-allow-origins=*");
        //創(chuàng)建Chrome引擎對(duì)象
        WebDriver webDriver = new ChromeDriver();
        //打開百度首頁
        webDriver.get("https://www.baidu.com");
        //找到百度搜索輸入框
        WebElement element = webDriver.findElement(By.xpath("http://*[@id=\"kw\"]"));
        //輸入"軟件測(cè)試(要搜索的內(nèi)容)"
        element.sendKeys("軟件測(cè)試");
        //找到百度一下按鈕,實(shí)現(xiàn)點(diǎn)擊
        webDriver.findElement(By.cssSelector("#su")).click();
        //這里添加休眠函數(shù)是為了更清楚的觀察
        sleep(3000);
        //校驗(yàn)
        //找到搜索結(jié)果
        List<WebElement> elements = webDriver.findElements(By.cssSelector("a em"));
        for(int i = 0;i < elements.size();i++){
            //如果返回的結(jié)果有軟件測(cè)試,證明測(cè)試通過,否則測(cè)試不通過
            if(elements.get(i).getText().equals("軟件測(cè)試")){
                flag = 1;
                System.out.println("測(cè)試通過");
                break;
            }
        }
        if(flag == 0){
            System.out.println("測(cè)試不通過");
        }
    }
}

?這里getText()方法表示獲取特定元素的文本內(nèi)容。get().getText(),返回你所選擇的元素的純文本內(nèi)容,不包括HTML標(biāo)簽。

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

1、webDriver API??

1.1、元素定位

1.1.1、CSS選擇器

?使用到的方法

方法 作用
findElement() 找到一個(gè)元素
findElements() 找到一批元素
By.cssSelector() 表示通過css選擇器查找元素,這個(gè)方法用在findElement()方法中作為參數(shù)。
sendKeys() 模擬用戶在輸入框中輸入文本、按鍵、組合鍵等操作。參數(shù)可以是字符串、鍵盤按鍵、鍵盤組合鍵等。
getText() 獲取特定元素的文本內(nèi)容

獲取class屬性值可以通過瀏覽器的f12鍵找到一個(gè)頁面的源碼

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

1??上述是通過class的方式復(fù)制內(nèi)容。

2??我們也可以點(diǎn)到輸入框的源碼位置,單擊鼠標(biāo)右鍵,使用css選擇器的方式定位輸入框,這里復(fù)制到的內(nèi)容是id屬性的值。兩種方式獲取的屬性值是不同的,是通過不同的方式(屬性)定位到輸入框的。

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

?程序

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class Test {
    public static void main(String[] args) {
        //啟動(dòng)Chrome
        ChromeOptions options = new ChromeOptions();
        //允許所有請(qǐng)求
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        //打開百度首頁
        webDriver.get("https://www.baidu.com");
        //找到百度搜索輸入框(通過css選擇器找到輸入框,這里是通過class屬性值定位到的)
        WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));
        //輸入軟件測(cè)試
        element.sendKeys("軟件測(cè)試");
    }
}

?結(jié)果

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

1.1.2、Xpath元素定位
WebElement element = webDriver.findElement(By.xpath("http://*[@id=\"kw\"]"));

結(jié)果:

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

1.1.3、面試題

1、css選擇器和Xpath選擇器的常見語法有哪些??

?CSS選擇器

  1. 標(biāo)簽選擇器:通過標(biāo)簽名來進(jìn)行定位。語法格式為“標(biāo)簽名”。例如"input"。
  2. id選擇器:通過元素的id屬性值來定位對(duì)應(yīng)的元素。語法格式"#id值",例如"#kw".
  3. 類選擇器:通過元素的class屬性值來定位對(duì)應(yīng)的元素。語法格式".class值",例如:".s_ipt"。
  4. 后代選擇器:通過空格分隔的兩個(gè)元素標(biāo)簽來定位對(duì)應(yīng)的元素。語法格式"父級(jí)選擇器?子級(jí)選擇器"。例如:"form input".

?Xpath選擇器:

  1. 絕對(duì)路徑/html/head/title(絕對(duì)路徑的效率非常低,所以不常用)
  2. 相對(duì)路徑
  • 相對(duì)路徑+索引//form[索引值]/span[索引值]/input (這里的索引如果不寫,默認(rèn)是從1開始。一個(gè)頁面中存在多個(gè)相同的標(biāo)簽,這個(gè)時(shí)候使用索引,表示路徑中的標(biāo)簽是頁面中的第幾個(gè),或者是某個(gè)標(biāo)簽(form)下的第幾個(gè)標(biāo)簽(input)).
  • 相對(duì)路徑+屬性值//input[@calss="s_ipt"]。
  • 相對(duì)路徑+通配符//*[@*=s_ipt]。表示將所有標(biāo)簽下的所有屬性值為s_ipt的屬性找到。
  • 相對(duì)路徑+文本匹配//a[text()="新聞"]

?2、css選擇器和Xpath選擇器你覺得那個(gè)更好?

CSS選擇器和Xpath選擇器都有各自的優(yōu)點(diǎn),沒有絕對(duì)的好會(huì)之分,二者在不同的場(chǎng)景下各有優(yōu)勢(shì)

  • CSS選擇器在Chrome、火狐等瀏覽器中查找速度快、效率高,語法更簡潔,在處理簡單元素的查找時(shí)更推薦使用。
  • Xpath選擇器功能更強(qiáng)大,可以通過包括和排除操作符進(jìn)行元素集合運(yùn)算,也可以選擇元素的足心和后代,還支持正則表達(dá)式和序列運(yùn)算。

?1.2、操作測(cè)試對(duì)象

方法 作用
click

點(diǎn)擊對(duì)象

sendKeys 模擬用戶在輸入框中輸入文本、按鍵、組合鍵等操作
submit 提交
text 用于獲取元素的文本信息
getAttribute 獲取屬性
clear 清楚對(duì)象輸入的文本內(nèi)容

?sendKeys、click和clear方法的使用

    private static void test01() throws InterruptedException {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("http://www.baidu.com/");
        sleep(2000);
        //找到百度輸入框,輸入"美食"
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("美食");
        sleep(2000);
        //點(diǎn)擊百度一下按鈕
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(2000);
        //清空百度搜索輸入框
        webDriver.findElement(By.cssSelector("#kw")).clear();
    }

由于這里的操作是連續(xù)的,小編不會(huì)插入動(dòng)圖,這里就展示最終的效果。

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

?submit的使用

在上述代碼中可以將click方法替換成submit方法,最終實(shí)現(xiàn)的效果是相同的。

webDriver.findElement(By.cssSelector("#su")).submit();

但是使用submit方法,存在一定的條件。如果點(diǎn)擊的元素放在form標(biāo)簽中,此時(shí)使用submit實(shí)現(xiàn)的效果click是一樣的,如果點(diǎn)擊的元素放在非form標(biāo)簽中,此時(shí)使用submit會(huì)報(bào)錯(cuò)

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

??getAttribute方法的使用

    private static void test03(){
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        String button_value = webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
        if(button_value.equals("百度一下")){
            System.out.println("測(cè)試通過");
        }else{
            System.out.println(button_value);
            System.out.println("測(cè)試不通過");
        }
    }

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

這里獲取到了"百度一下"這個(gè)文本信息,但是有的老鐵就會(huì)產(chǎn)生疑問使用getText()方法也可以得到文本信息,為什么使用getAttribute來獲取。

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

?我們使用getText()方法獲取文本信息,只能是獲取標(biāo)簽中間的文本信息。

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

1.3、添加等待?

1、強(qiáng)制等待(sleep)

2、智能等待(隱式等待、顯示等待)

假設(shè)設(shè)置等待時(shí)間為3天

強(qiáng)制等待就會(huì)一直等待,等待時(shí)間為3天

隱式等待,最長等待3天時(shí)間,如果在三天之內(nèi)獲取頁面上的元素,此時(shí)就會(huì)執(zhí)行下面的程序,如果等待三天還是沒有找到這個(gè)元素,就會(huì)報(bào)錯(cuò)。

強(qiáng)制等待:

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

隱式等待:

private static void test01() throws InterruptedException {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        sleep(2000);
        //找到百度輸入框,輸入"美食"
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("美食");
        //點(diǎn)擊百度一下按鈕
        webDriver.findElement(By.cssSelector("#su")).submit();
        //隱式等待
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.DAYS);
        //清空百度搜索輸入框
        webDriver.findElement(By.cssSelector("#kw")).clear();
    }

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

?顯示等待:

  private static void test04(){
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        //等待2秒,等待頁面加載完成
        WebDriverWait wait = new WebDriverWait(webDriver,2);
        //等待元素加載完成并執(zhí)行操作
        wait.until(ExpectedConditions.titleIs("百度一下,你就知道"));
    }

顯示等待和隱式等待的區(qū)別

1、作用范圍:隱式等待是全局性的等待設(shè)置,適用于整體頁面的元素定位操作;顯示等待是針對(duì)特定元素或條件的等待設(shè)置,更具體、可定制性更強(qiáng)。

2、等待時(shí)間:隱式等待直選喲設(shè)置一次,并適用于所有元素的定位操作;顯示等待可以根據(jù)不同情況設(shè)定不同的等待時(shí)間。

3、等待條件:隱式等待沒有明確的等待條件,只要在規(guī)定的時(shí)間內(nèi)找到元素即可;顯示等待可以指定等待元素可見、可點(diǎn)擊等待特定條件。

4、操作方式:隱式等待是自動(dòng)等待的,不需要再代碼中顯示調(diào)用;顯示等待需要再代碼中顯示調(diào)用等待方法。

1.4、打印信息

打印title和url

    private static void test05() {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        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("當(dāng)前頁面url:"+url+",當(dāng)前頁面title:"+title);
            System.out.println("測(cè)試通過");
        }else{
            System.out.println("測(cè)試不通過");
        }
    }

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

?1.5、瀏覽器的操作

操作 說明
browser.maxmize_window() 瀏覽器窗口最大化
browser.set_window_size(width,hight) 設(shè)置瀏覽器寬、高
browser.forward() 瀏覽器的前進(jìn)
browser.back() 瀏覽器的后退
document.documentElement.scrollTop=0 將瀏覽器滾動(dòng)條滑動(dòng)到最頂端
document.documentElement.scrollTop=10000 將瀏覽器滾動(dòng)條滑動(dòng)到最低端

?這個(gè)代碼演示了瀏覽器的前進(jìn)、后退、刷新操作。但是介于小編不會(huì)使用動(dòng)圖,所以就不添加執(zhí)行結(jié)果了。

    private static void test07() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        //打開百度首頁
        webDriver.get("https://www.baidu.com/");
        //搜索521
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("521");
        //點(diǎn)擊百度一下
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        //瀏覽器后退
        webDriver.navigate().back();
        //強(qiáng)制等待3秒
        sleep(3000);
        //瀏覽器刷新
        webDriver.navigate().refresh();
        //瀏覽器前進(jìn)
        sleep(3000);
        webDriver.navigate().forward();
    }

瀏覽器的滾動(dòng)條

private static void test08() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        //打開百度首頁
        webDriver.get("https://www.baidu.com/");
        //搜索521
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("521");
        //點(diǎn)擊百度一下
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        webDriver.navigate().forward();
        sleep(3000);
        //滾動(dòng)條到結(jié)尾 
      ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
    }

?窗口的最大化、窗口的全屏化、設(shè)置窗口大小

    private static void test08() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        //打開百度首頁
        webDriver.get("https://www.baidu.com/");
        //搜索521
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("521");
        //點(diǎn)擊百度一下
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
        sleep(3000);
        //瀏覽器窗口最大化
        webDriver.manage().window().maximize();
        sleep(3000);
        //瀏覽器全屏化
        webDriver.manage().window().fullscreen();
        sleep(3000);
        //設(shè)置瀏覽器窗口大小
        webDriver.manage().window().setSize(new Dimension(600,800));
    }

1.6、鍵盤事件

操作 說明
sendKeys(Keys.TAB) #TAB
sendKeys(Keys.ENTER) #回車
sendKeys(Keys.SPACE) #空格鍵
sendKeys(Keys.ESCAPE) #回退鍵(ESC)
sendKeys(Keys.CONTROL,'a')

#全選(Ctrl+A)

sendKeys(Keys.CONTROL,'c') #復(fù)制(Ctrl+C)
sendKeys(Keys.CONTROL,'x') #剪切(Ctrl+x)
sendKeys(Keys.CONTROL,'v') #粘貼(Ctrl+v)
    private static void test09() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        //打開百度首頁
        webDriver.get("https://www.baidu.com/");
        //搜索521
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("521");
        //ctrl+a
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"a");
        sleep(3000);
        //ctrl+x
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"x");
        sleep(3000);
        //ctrl+v
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"v");
        sleep(3000);
    }

1.7、鼠標(biāo)事件?

操作 說明
context_click() 右擊
double_dlick() 雙擊
drag_and_drop() 拖動(dòng)
move_to_element() 移動(dòng)
    private static void test09() throws InterruptedException {
        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-item_1CwH-.s-tab-pic_p4Uej.s-tab-pic"));
        // 鼠標(biāo)右擊出現(xiàn)框
        Actions actions = new Actions(webDriver);
        sleep(3000);
        //contextClick()右擊鼠標(biāo)
        actions.moveToElement(webElement).contextClick().perform();
    }

1.8、定位一組元素

findElements示例,將頁面上所有的checkbox都勾選上。

    private static void page01() {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("http://localhost:63342/_20230925testcode/src/main/Page/test01.html?_ijt=hk3glm0bcb2222roak6kf4826i&_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++) {
            // 如果每個(gè)元素type值等于checkbox進(jìn)行點(diǎn)擊
            // getAttribute獲取頁面上的元素屬性值,里面的type是當(dāng)前元素屬性
            if(webElements.get(i).getAttribute("type").equals("checkbox")){
                webElements.get(i).click();
            } else {
                // 否則什么也不操作
                ;
            }
        }
    }

1.9、多層框架/窗口定位

對(duì)于一個(gè)web應(yīng)用,經(jīng)常會(huì)出現(xiàn)框架或窗口的應(yīng)用,這也就給我們的定位帶來了一定的困難。

  • 定位一個(gè)frame:switch_to.frame(name_or_id_or_frame_element)
  • 定位一個(gè)窗口window:switch_to.window(name_or_id_or_frame_element)
    private static void page02() {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("http://localhost:63342/_20230925testcode/src/main/Page/test02.html?_ijt=sdck9iv3t1f7l8bv2khvu2k87t&_ij_reload=RELOAD_ON_SAVE");
        webDriver.switchTo().frame("f1");
        webDriver.findElement(By.cssSelector("body > div > div > a")).click();
    }

1.10、下拉框處理

通過IndexValue來選擇演示:

    private static void page03() {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("http://localhost:63342/_20230925testcode/src/main/Page/test03.html?_ijt=ibu1q228hs9l4q026vbbfjp8r3&_ij_reload=RELOAD_ON_SAVE");
        WebElement webElement = webDriver.findElement(By.cssSelector("#ShippingMethod"));
        Select select = new Select(webElement);
        //通過下標(biāo)來選擇
//        select.selectByIndex(3);
        //通過value值來選擇
        select.selectByValue("12.51");
    }

1.11、彈窗處理

    private static void test10() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("http://localhost:63342/_20230925testcode/src/main/Page/test04.html?_ijt=bv9np3tl8gm9kv04oam7i2sfij&_ij_reload=RELOAD_ON_SAVE");
        webDriver.findElement(By.cssSelector("button")).click();
        sleep(3000);
        //alert彈窗取消
        webDriver.switchTo().alert().dismiss();
        sleep(3000);
        //點(diǎn)擊按鈕
        webDriver.findElement(By.cssSelector("button")).click();
        //在alert彈窗中輸入”張三“
        webDriver.switchTo().alert().sendKeys("張三");
        //alert彈窗確認(rèn)
        sleep(3000);
        webDriver.switchTo().alert().accept();
    }

1.12、上傳文件操作

    private static void test11() {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("http://localhost:63342/_20230925testcode/src/main/Page/test05.html?_ijt=16g56va44mth0ok9g9lfkdqj32&_ij_reload=RELOAD_ON_SAVE");
        webDriver.findElement(By.cssSelector("input")).sendKeys("E:\\360MoveData\\Users\\26542\\Desktop\\圖片");
    }

1.13、關(guān)閉瀏覽器操作

關(guān)閉瀏覽器的操作有兩種,quit()方法和close()方法

quit方法:我們以百度的新聞連接為例,進(jìn)行說明

    private static void test12() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https:www.baidu.com");
        webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();
        sleep(4000);
        webDriver.quit();
        
    }

close()方法:還是以百度的新聞連接為例,進(jìn)行說明

    private static void test12() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https:www.baidu.com");
        webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();
        sleep(4000);
        webDriver.close();
}

?新聞頁打開之后,之前get方法打開的百度首頁被關(guān)閉。

注意:兩個(gè)方法quit()和close()之間的區(qū)別

  • quit方法關(guān)閉了整個(gè)瀏覽器,close關(guān)閉當(dāng)前頁面。(這里的當(dāng)前頁面是指被操作的頁面。)
  • quit方法會(huì)清空緩存、close不會(huì)清空緩存

1.14、窗口的切換

先來看一下錯(cuò)誤的代碼示范

    private static void test13() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        //打開百度首頁
        webDriver.get("https://baidu.com/");
        //跳轉(zhuǎn)到新聞連接的頁面
        webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();
        sleep(3000);
        //找到新聞頁面中的搜索框,然后輸入"新聞聯(lián)播"
        webDriver.findElement(By.cssSelector("#ww")).sendKeys("新聞聯(lián)播");
        //在新聞頁面中找到點(diǎn)一下按鈕,點(diǎn)擊
        webDriver.findElement(By.cssSelector("#s_btn_wr")).click();
    }

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)

這是因?yàn)楝F(xiàn)在的代碼默認(rèn)獲取get方法打開的頁面中的這些元素,我們?cè)谶@里要獲取的是另一個(gè)頁面的元素,所以就會(huì)獲取不到。就會(huì)報(bào)錯(cuò)。

這個(gè)時(shí)候我們就需要使用getWindowHandles方法來獲取所有窗口的句柄。

方法 說明
getWindowHandles()方法 獲取所有窗口的句柄
getWindowHandles()方法 獲取get打開的頁面窗口句柄
    private static void test13() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://baidu.com/");
        webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();
        sleep(3000);
        //獲取所有頁面的窗口句柄
        Set<String> handles = webDriver.getWindowHandles();
        String target_handle = "";
        for (String handle:handles){
            target_handle = handle;
        }
        //拿到當(dāng)前窗口的句柄
        webDriver.switchTo().window(target_handle);
        sleep(3000);
        webDriver.findElement(By.cssSelector("#ww")).sendKeys("新聞聯(lián)播");
        webDriver.findElement(By.cssSelector("#s_btn_wr")).click();
    }

1.15、截圖?

這里首先需要引入一個(gè)依賴

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>
    private static void test15() throws InterruptedException, IOException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("軟件測(cè)試");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        //強(qiáng)轉(zhuǎn)成截圖對(duì)象
        File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        //將截圖好的圖片存儲(chǔ)到E://20231005jietu.png路徑下
        FileUtils.copyFile(file, new File("E:\\12\\20230521.png"));
    }

【軟件測(cè)試】自動(dòng)化測(cè)試selenium,軟件測(cè)試,selenium,壓力測(cè)試,測(cè)試工具,1024程序員節(jié)文章來源地址http://www.zghlxwxcb.cn/news/detail-796119.html

到了這里,關(guān)于【軟件測(cè)試】自動(dòng)化測(cè)試selenium的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【軟件測(cè)試】python+selenium自動(dòng)化測(cè)試

    【軟件測(cè)試】python+selenium自動(dòng)化測(cè)試

    一、什么是自動(dòng)化測(cè)試 自動(dòng)化測(cè)試指軟件測(cè)試的自動(dòng)化,在預(yù)設(shè)狀態(tài)下運(yùn)行應(yīng)用程序或者系統(tǒng),預(yù)設(shè)條件包括正常和異常,最 后評(píng)估運(yùn)行結(jié)果。將人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的過程。 單元測(cè)試 java的單元測(cè)試框架是Junit,在這里不再贅述。 接口自動(dòng)化 接口測(cè)試就是

    2023年04月09日
    瀏覽(34)
  • 軟件測(cè)試(五)自動(dòng)化 selenium

    軟件測(cè)試(五)自動(dòng)化 selenium

    自動(dòng)化測(cè)試指軟件測(cè)試的自動(dòng)化,在預(yù)設(shè)狀態(tài)下運(yùn)行應(yīng)用程序或者系統(tǒng),預(yù)設(shè)條件包括正常和異常,最后評(píng)估運(yùn)行結(jié)果。將人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器(代碼)執(zhí)行的過程。(簡單而言其實(shí)就是降低重復(fù)性的工作(大部分是Python)) 自動(dòng)化測(cè)試的具體實(shí)現(xiàn),應(yīng)該是包含下

    2024年02月08日
    瀏覽(31)
  • python+selenium自動(dòng)化軟件測(cè)試 :多線程

    python+selenium自動(dòng)化軟件測(cè)試 :多線程

    運(yùn)行多個(gè)線程同時(shí)運(yùn)行幾個(gè)不同的程序類似,但具有以下優(yōu)點(diǎn): 進(jìn)程內(nèi)共享多線程與主線程相同的數(shù)據(jù)空間,如果他們是獨(dú)立的進(jìn)程,可以共享信息或互相溝通更容易. 線程有時(shí)稱為輕量級(jí)進(jìn)程,他們并不需要多大的內(nèi)存開銷,他們關(guān)心的不是過程便宜. 一個(gè)線程都有一個(gè)開始

    2024年02月16日
    瀏覽(37)
  • 軟件測(cè)試/測(cè)試開發(fā)丨Selenium Web自動(dòng)化測(cè)試基本操作

    本文為霍格沃茲測(cè)試開發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享 原文鏈接:https://ceshiren.com/t/topic/26901 模擬功能測(cè)試中對(duì)瀏覽器的操作 get方法打開瀏覽器 refresh方法刷新頁面 用back方法回退到上一個(gè)界面 maximize_window方法使窗口最大化 minimize_window方法使窗口最小化 標(biāo)簽: a 屬性:href 類屬性

    2024年02月10日
    瀏覽(30)
  • 軟件測(cè)試/測(cè)試開發(fā)丨Selenium Web自動(dòng)化測(cè)試 高級(jí)控件交互方法

    本文為霍格沃茲測(cè)試開發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享 原文鏈接:https://ceshiren.com/t/topic/27045 使用場(chǎng)景 對(duì)應(yīng)事件 復(fù)制粘貼 鍵盤事件 拖動(dòng)元素到某個(gè)位置 鼠標(biāo)事件 鼠標(biāo)懸停 鼠標(biāo)事件 滾動(dòng)到某個(gè)元素 滾動(dòng)事件 使用觸控筆點(diǎn)擊 觸控筆事件(了解即可) https://www.selenium.dev/documentati

    2024年02月09日
    瀏覽(62)
  • 自動(dòng)化測(cè)試工具Selenium的基本使用方法,軟件測(cè)試基礎(chǔ)

    自動(dòng)化測(cè)試工具Selenium的基本使用方法,軟件測(cè)試基礎(chǔ)

    browser.find_element(By.ID,‘kw’).send_keys(“美女”) browser.find_element_by_id(‘kw’).send_keys(‘性感’) 2.通過標(biāo)簽name屬性進(jìn)行定位 browser.find_element_by_name(“wd”).send_keys(“Linux”) browser.find_element(By.NAME,‘wd’).send_keys(“美女”) 3.通過標(biāo)簽名進(jìn)行定位 browser.find_element_by_tag_name(“input”).

    2024年04月22日
    瀏覽(97)
  • 軟件測(cè)試自動(dòng)化Java篇【Selenium+Junit 5】

    軟件測(cè)試自動(dòng)化Java篇【Selenium+Junit 5】

    為什么選擇selenium作為我們的web自動(dòng)化測(cè)試工具? 開源免費(fèi) 支持多瀏覽器 支持多系統(tǒng) 支持多語言【Java,Python,C#,Rubby,JavaScript,Kolin】 selenium包提供了很多可供測(cè)試使用的API Chrome瀏覽器 Chrome驅(qū)動(dòng)【驅(qū)動(dòng)器版本要和瀏覽器版本對(duì)應(yīng)越詳細(xì)越好】 然后把驅(qū)動(dòng)包放在安裝jdk的

    2024年01月18日
    瀏覽(45)
  • 軟件測(cè)試/測(cè)試開發(fā)丨Selenium Web自動(dòng)化多瀏覽器處理

    軟件測(cè)試/測(cè)試開發(fā)丨Selenium Web自動(dòng)化多瀏覽器處理

    本文為霍格沃茲測(cè)試開發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享 原文鏈接:https://ceshiren.com/t/topic/27185 用戶使用的瀏覽器(firefox,chrome,IE 等) web 應(yīng)用應(yīng)該能在任何瀏覽器上正常的工作,這樣能吸引更多的用戶來使用 是跨不同瀏覽器組合驗(yàn)證網(wǎng)站或 web 應(yīng)用程序功能的過程 是兼容性測(cè)試的一個(gè)

    2024年02月09日
    瀏覽(27)
  • 軟件測(cè)試——功能測(cè)試,使用Java,IDEA,Selenium進(jìn)行web自動(dòng)化測(cè)試

    軟件測(cè)試——功能測(cè)試,使用Java,IDEA,Selenium進(jìn)行web自動(dòng)化測(cè)試

    視頻地址:03-web元素定位ID_嗶哩嗶哩_bilibili p1.下載jdk,maven,idea p2.配置java-selenium環(huán)境正式開始: (1)創(chuàng)建代碼: (2)第一次運(yùn)行會(huì)報(bào)錯(cuò):要下載東西? (3) Windows系統(tǒng)的輸入如下: ?(4)完成如下:(這個(gè)用的是Linux系統(tǒng)的) p3:web元素定位ID (1)先改一下之前的代碼 ?(

    2024年02月08日
    瀏覽(39)
  • 自動(dòng)化測(cè)試:Selenium高級(jí)操作!,看完阿里P9大牛的“軟件測(cè)試成長筆記”我悟了

    自動(dòng)化測(cè)試:Selenium高級(jí)操作!,看完阿里P9大牛的“軟件測(cè)試成長筆記”我悟了

    分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍 可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開源的?。?! qq群號(hào):110685036 Switch_to切換frame 如果元素在html的frame或iframe中,則無法直接定位到元素。需要先切換到該frame中,再進(jìn)行定位及其他操作。 相關(guān)方法: driver.switch_to.frame(frame_reference)

    2024年04月25日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包