我有一个基于web的应用程序,它为我在那个特定的新窗口中所做的每个操作启动一个子窗口。例如:父窗口(ParentButton)、->Child1窗口(Child1Button)、->Child2窗口(Child2Button)
我在Parent window中点击一个P按钮,就会启动Child window-1。我在-1\f25 Child window-1中点击Cbutton1,将启动-2\f25 Child Window-2。我在Child window-2中点击Cbutton2,它将启动Child Window-3。
因此,我假设我已经启动了浏览器应用程序,并且我必须切换到Child Window-1,执行cbutton-1,切换到Child window-2,执行-2\f25 cbutton-2操作,切换到子窗口,并在该窗口的文本区发送一些文本。
这是我的Java代码,
/* driver launches and logs in to the Parent window */
String winHandleConsole = driver.getWindowHandle();
log.info("Title of Console window: " +driver.getTitle());
driver.findElement(Constants.lnkIncidentManagement).click();
Set<String> strHandles = driver.getWindowHandles();
log.info("Size of window handle: "+strHandles.size());
for(String handle: strHandles){
driver.switchTo().window(handle);
String strTitle = driver.getTitle();
if(strTitle.equalsIgnoreCase("Incident Management Console(Search)")){
driver.manage().timeouts().implicitlyWait(TimeOutInSec, TimeUnit.SECONDS);
driver.findElement(Constants.lnkNewIncident).click();
Set<String> strHandle_2 = driver.getWindowHandles();
log.info("NEW WINDOW HANDLES: "+ strHandle_2.size());
for(String handle_2: strHandle_2){
log.info("-------:" + driver.getTitle());
if(driver2.getTitle().equalsIgnoreCase("Incident (New)")){
log.info("Title of Incident-New: "+ driver2.getTitle());
driver.switchTo().window(handle_2);
driver.manage().timeouts().implicitlyWait(TimeOutInSec, TimeUnit.SECONDS);
driver.findElement(Constants.txtNewIncidentSummary).sendKeys("This is a text");
}
}
}`我看到一个标题为“事件(新)”的新窗口,当我打印strHandle_2的大小时,我看到打印了3个。但是,当我打印handle_2变量时,我看不到打印的标题。
从parent切换到child1,从child1切换到child2,该怎么做?
发布于 2019-07-29 15:23:46
package selenium;
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.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
public class BookToCart
{
public static void main(String[] args) throws InterruptedException {
//Instantiating FirefoxDriver
System.setProperty("webdriver.chrome.driver", "D:\\selenium\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
//Maximize the browser
driver.manage().window().maximize();
//Implicit wait for 10 seconds
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//To launch softwaretestingmaterial.com
driver.get("http://wikipedia.com");
WebElement link = driver.findElement(By.id("js-link-box-es"));
Actions newwin = new Actions(driver); newwin.keyDown(Keys.SHIFT).click(link).keyUp(Keys.SHIFT).build().perform();
Thread.sleep(6000);
WebElement link2 = driver.findElement(By.id("js-link-box-it"));
Actions newwin2 = new Actions(driver);
newwin.keyDown(Keys.SHIFT).click(link2).keyUp(Keys.SHIFT).build().perform();
Thread.sleep(6000);
WebElement link3 = driver.findElement(By.id("js-link-box-en"));
Actions newwin3 = new Actions(driver);
newwin.keyDown(Keys.SHIFT).click(link3).keyUp(Keys.SHIFT).build().perform();
Thread.sleep(6000);
int count=0;
String win = driver.getWindowHandle();
ArrayList<String> allWindows = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(allWindows.get(1));
Thread.sleep(6000);
WebElement about = driver.findElement(By.xpath("//*[@title='Find out about Wikipedia']"));
about.click();
}
}发布于 2017-04-14 15:11:09
假设您已经在使用两个窗口,现在您想要单击将打开第三个窗口的链接,并且您想要切换到第三个窗口:我已经编写了一个简单的逻辑,它正在工作.............将WebElement传递到要单击的位置..............
public static void switchToWindow(WebElement ele)
{
try {
Set<String> OldAllWindows = GenericMethods.driver.getWindowHandles();
ele.click();
Set<String> NewAllWindows = GenericMethods.driver.getWindowHandles();
for(String newWindow : NewAllWindows)
{
if(!OldAllWindows.contains(newWindow))
{
GenericMethods.driver.switchTo().window(newWindow);
}
}
//
} catch (Exception e) {
System.out.println("Issue in Switching Window"+e.getMessage());
}
}https://stackoverflow.com/questions/29403611
复制相似问题