Selenium 構文の高度な + 共通 API

目次

ブラウザ操作

ブラウザのロールバック、転送、更新

ブラウザウィンドウの設定サイズ 

ブラウザ設定の幅と高さ 

ブラウザウィンドウを最大化する 

ブラウザ コントロールのスクロール バー 

情報印刷 

ページのタイトルと現在のページの URL を出力します。

要素のグループを配置する 

マウスとキーボードのイベント 

キーボード 

ねずみ 

ドロップダウンボックスの操作 

インデックスによる位置決め (selectByIndex(インデックス値(0から始まる)))

値属性による位置決め (selectByValue)

テキストコンテンツによる位置決め (selectByVisibleText)

ファイルのアップロード 

マルチレベルのフレーム/ウィンドウの位置決め (switchTo())

ポップアップ 

警告ポップアップと確認ポップアップ

プロンプトポップアップウィンドウ 

スクリーンショット 

ページを閉じる(終了して閉じる)


ブラウザ操作

ブラウザのロールバック、転送、更新

ブラウザのロールバックとは、以下に示すように、現在のページから前のページに戻ることを指します。

ここで、ページと新しいタブの違いに注意してください。

ここでは、たとえば、Baidu 検索を開き、ソフトウェアを検索してテストし、ロールバックします。

    private static void test02() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
       WebElement element= webDriver.findElement(By.cssSelector("#kw"));
       element.sendKeys("软件测试");
       Thread.sleep(3000);
       webDriver.navigate().back();
       
    }

戻るときは、ドライバーが提供するナビゲーションで back メソッドを使用する必要があります。もちろん、ロールバックする前にページに戻りたい場合は、ナビゲーションで forward メソッドを使用できます。

    private static void test02() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
       WebElement element= webDriver.findElement(By.cssSelector("#kw"));
       element.sendKeys("软件测试");
       Thread.sleep(3000);
       webDriver.navigate().back();
        Thread.sleep(3000);
       webDriver.navigate().forward();

    }

もちろん、ページを更新したい場合は、「ナビゲート」の下の更新メソッドを使用できます。

    private static void test02() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        WebElement element= webDriver.findElement(By.cssSelector("#kw"));
        element.sendKeys("软件测试");
        Thread.sleep(3000);
        webDriver.navigate().back();
        Thread.sleep(3000);
        webDriver.navigate().forward();
        Thread.sleep(3000);
        webDriver.navigate().refresh();
       

    }

ブラウザウィンドウの設定サイズ 

ブラウザ ウィンドウのサイズを変更したり、ウィンドウの幅と高さを設定したり、ウィンドウを最大化することもできます。

ブラウザ設定の幅と高さ 

たとえば、Baidu 検索ページでニュース ボタンをクリックした後のウィンドウの幅と高さ 

webDriver.manage().window().setSize(new Dimension(200,500));

最大化することもできる

ブラウザウィンドウを最大化する 

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

 

ブラウザ コントロールのスクロール バー 

ブラウザのスクロールバーコントロールにはjsスクリプトが必要です 

たとえば、フロントエンド ページに次のように入力します。

document.documentElement.scrollTop=9999

スクロールバーが下に移動します。では、アイデアをどのように実装すればよいでしょうか。

((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=19999");

 

情報印刷 

ページのタイトルと現在のページの URL を出力します。

 Baidu 検索ページのタイトルを取得します。

 String title= webDriver.getTitle();

Baidu 検索ページの URL を取得します。 

String url=webDriver.getCurrentUrl();
    private static void test05() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        //获取当前页面的标题
       String title= webDriver.getTitle();
       //获取当前页面的URL
        String url=webDriver.getCurrentUrl();
        System.out.println("当前页面的标题为"+title);
        System.out.println("当前页面的url为"+url);
    }

要素のグループを配置する 

複数のタグ タイプを持ついくつかのオプションなどの要素のグループを見つけます。すべての入力タグでタイプ値が context であるオプションを選択する必要があります。

    private static void test06() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("你要打开的页面");
        //获取所有的input标签
        List<WebElement> elements= webDriver.findElements(By.cssSelector("input"));
        //选中符合type的值为context的选项
        for (int i = 0; i <elements.size() ; i++) {
            if(elements.get(i).getAttribute("type").equals("context")){
                elements.get(i).click();
            }else {
                ;//什么也不干
            }

        }
    }

マウスとキーボードのイベント 

キーボード 

たとえば、Baidu の検索ボックスに「ソフトウェア テスト」と入力して検索し、Ctrl+A を使用して検索ボックスでソフトウェア テストを選択し、Ctrl+X を実行してから、Ctrl+V を実行してコピーして検索します。

   private static void test07() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        //搜索软件测试
        //WebElement element=webDriver.findElement(By.cssSelector("#kw"));
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
        sleep(3000);
        //webDriver.manage().timeouts().implicitlyWait(1, TimeUnit.DAYS);
        //选中搜索框+ctrl+A
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A");
        sleep(3000);
        //webDriver.manage().timeouts().implicitlyWait(1, TimeUnit.DAYS);
        //ctrl+x
       webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"X");
        sleep(3000);
        //webDriver.manage().timeouts().implicitlyWait(1, TimeUnit.DAYS);
        //ctrl+v
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"V");
        //webDriver.manage().timeouts().implicitlyWait(1, TimeUnit.DAYS);
       sleep(3000);
    }

キーボード入力を使用すると、sendKeys のパラメータ キーを使用して、関連するキー (SHIFT、CONTROL など) + 対応するキー (二重引用符が必要) を呼び出します。  

ねずみ 

たとえば、ソフトウェア テストを検索した後、画像を右クリックします。


    private static void test08() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        //将鼠标移动到图片位置进行右击
     WebElement element=  webDriver.findElement(By.cssSelector("#s_tab > div > a.s-tab-item.s-tab-item_1CwH-.s-tab-pic_p4Uej.s-tab-pic"));
        //借助Actions
        Actions actions=new Actions(webDriver);
        //进行右击并展示
        actions.moveToElement(element).contextClick().perform();
    }

マウスを使用してクリックする場合は、Actions オブジェクトを使用する必要があり、それを使用する場合は、perform を使用して効果を表示します。

一般的に使用されるマウス操作は次のとおりです。

 

ドロップダウンボックスの操作 

ドロップダウン ボックスの操作には、Select オブジェクトを使用する必要があります。

インデックスによる位置決め (selectByIndex(インデックス値(0から始まる)))

    private static void test09() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("需要访问的网址");
        WebElement element=webDriver.findElement(By.cssSelector("下拉框的css标志位"));
        //借助Select对象
        Select select=new Select(element);
        select.selectByIndex(0);
    }

値属性による位置決め (selectByValue)

 

    private static void test09() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("需要访问的网址");
        WebElement element=webDriver.findElement(By.cssSelector("下拉框的css标志位"));
        //借助Select对象
        Select select=new Select(element);
        //select.selectByIndex(0);
        select.selectByValue("下拉框的value属性对应的值");
    }

テキストコンテンツによる位置決め (selectByVisibleText)

 

    private static void test09() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("需要访问的网址");
        WebElement element=webDriver.findElement(By.cssSelector("下拉框的css标志位"));
        //借助Select对象
        Select select=new Select(element);
        //select.selectByIndex(0);
        //select.selectByValue("下拉框的value属性对应的值");
        select.selectByVisibleText("C");
    }

ファイルのアップロード 

ファイルアップロードはファイルアップロードボタンを選択する記事で、sendKeysを使用してファイルのパスをインポートしてファイルをアップロードします。

    private static void test10() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("需要访问的网址");
        WebElement element=webDriver.findElement(By.cssSelector("文件上传框的css标志位"));
        element.sendKeys("文件路径,如E://xxx.xxx");
    }

マルチレベルのフレーム/ウィンドウの位置決め (switchTo())

セレクターを直接使用して div の下に配置するため、フレームの下の一部のタグの位置を取得できないため、マルチレベルのフレームとウィンドウの位置を使用する必要があります。フレームについては、次を使用します。

    private static void test11() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("需要访问的网址");
        webDriver.switchTo().frame("frame的id");
        //找到标志所在的frame之后就可以正常使用了
        webDriver.findElement(By.cssSelector("选中元素的css标志位")).click();
    }

マルチレベルのウィンドウの配置はフレームと同様に、switchTo().window を使用します。

ポップアップ 

警告ポップアップと確認ポップアップ

Alert オブジェクトを使用する必要があります。Dismiss はキャンセルを意味し、Accept は確認を意味します。

    private static void test12() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("需要访问的网址");
       Alert alert= webDriver.switchTo().alert();
       //取消弹窗
        alert.dismiss();
        //确认弹窗
        alert.accept();
        //提示弹窗中输入内容
        alert.sendKeys("输入的内容");
        //进行确认
        alert.accept();
    }

プロンプトポップアップウィンドウ 

コンテンツを入力し、「確認」をクリックする必要があります。

    private static void test12() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("需要访问的网址");
       Alert alert= webDriver.switchTo().alert();
       //取消弹窗
        alert.dismiss();
        //确认弹窗
        alert.accept();
        //提示弹窗中输入内容
        alert.sendKeys("输入的内容");
        //进行确认
        alert.accept();
    }

スクリーンショット 

テスト結果については、表示するためにスクリーンショットを使用する必要がある場合があります。自動化されたスクリーンショットを使用するには、まず Maven リポジトリ内の関連する依存関係を使用し、Maven リポジトリでcommon-ioを検索する必要があります。

 

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

pom.xml にインポートする

 Baidu でソフトウェア テストを検索し、スクリーンショットを保存します。


    private static void test13() 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("C:\\Users\\ht\\2023-0816jietu.png"));

    }

スクリーンショットが完成しました。

ページを閉じる(終了して閉じる)

テスト後にページを閉じるには、driver.quit と driver.close を使用します。

quit と close には違いがあり、quit はページを閉じた後にキャッシュをクリアしますが、close はキャッシュをクリアしません。

おすすめ

転載: blog.csdn.net/m0_67995737/article/details/132294330