セレニウムWebドライバ+ Internet Explorerを使用してポータルを自動化していますが、新たに開かれたタブにURLを渡すために、IEは新しいタブを認識せず、getWindowHandles()は1をcountとして返します。同じコードはChromeで正常に動作します。Selenium IEドライバは、同じウィンドウの複数のタブでgetWindowHandlesメソッドを使用しているときにタブ数を1に戻します。
サンプルコード1:
String baseUrl = "www.facebook.com";
driver.get(baseUrl);
driver.findElement(By.xpath("//*[@id='userName']")).sendKeys("xyz");
driver.findElement(By.xpath("//*[@id='password']")).sendKeys("****");
driver.findElement(By.xpath("//*[@id='loginButton']")).click();
driver.findElement(By.cssSelector("Body")).sendKeys(Keys.CONTROL +"t");
driver.getWindowHandles();
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1)); //switches to new tab
driver.get("www.google.com");
サンプルコード2:
String baseUrl = "www.facebook.com";
driver.get(baseUrl);
driver.findElement(By.xpath("//*[@id='userName']")).sendKeys("xyz");
driver.findElement(By.xpath("//*[@id='password']")).sendKeys("****");
driver.findElement(By.xpath("//*[@id='loginButton']")).click();
String parent = driver.getWindowHandle();
driver.findElement(By.cssSelector("Body")).sendKeys(Keys.CONTROL +"t");
Thread.sleep(3000);
for(String winHandle : driver.getWindowHandles()){
if(!winHandle.equals(parent)){
driver.switchTo().window(winHandle);
driver.get("www.google.com");
}
}
はまた、自動Cookie処理を上書き/プロテクトモードを変更するようにIEの設定を変更するいくつかの他の方法を試してみましたが、何も働いていません。
IEでコードを介して新しいタブを開き、Seleniumの任意のメソッドを使用して正確なタブ数を取得する方法はありますか?
構成:
IE:11、 セレン-javaの:2.47/3.7 IEDriver:3.3.0/2.53、 のWindows 7
の可能性のある重複した[どのように新しいウィンドウが開き、その実行を再開したときに知ってもらうウェブドライバをセレンできる](https://stackoverflow.com/questions/9188343/how-can -selenium-web-driver-get-to-the-new-window-has-opened-and-then) – JeffC
IEドライバは、新しいタブを開いた(つまり、 'Ctrl + t')。回避策はありません。 IEドライバでタブを使用しないでください。 – JimEvans
@JimEvans:新しいタブを開いて既存の実行ウィンドウにURLを渡す必要がある場合、IEを使用する代わりに別のブラウザに切り替えてください - 唯一のオプションですか? – srinivas