目次
インデックスによる位置決め (selectByIndex(インデックス値(0から始まる)))
テキストコンテンツによる位置決め (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 はキャッシュをクリアしません。