0

このコードでは、Single クラスと Functional クラスを使用しています。ここで AllpagesLogins はクラス名であり、このコードは Functional クラスで記述されており、全体のスクリプトは TestNg クラスで実行されています。したがって、linkBtn の名前を matrimonials@shaadi.com としてクリックすると、その子ウィンドウに子ウィンドウが表示されます。その子ウィンドウの [リンクを閉じる] ボタンが表示されます。そのため、子ウィンドウ コードのコードも直接コードで記述しますが、誰も正しく動作していませんか? この子ウィンドウを処理するにはどうすればよいですか?

package EmailMessage;

import java.util.Set;

import org.junit.Assert;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import Class.AllpagesLogins;

//Declaring the Class Name

public class EmailMessage 
{

public void EMSG(WebDriver driver) throws Exception
{

//Here AllpagesLogins is a Class Name

AllpagesLogins APL = new AllpagesLogins();

//Clicking on the Email Message Menu Button

driver.findElement(By.id(APL.EMSG_EmailMsg_MenuBtn_ID)).click();

System.out.println("Clicked on the Email Message Menu Button");

Thread.sleep(2000);

//Checking the Text for the Email Message Title

WebElement asserta=driver.findElement(By.id(APL.EMSG_EmailMsg_MainTitle_ID));

String a=asserta.getText();

try

 {

Assert.assertEquals("Email Messages", a);

System.out.println("Main Title Name as Email Messages");

 }

catch (Error e1)

{


 System.out.println("Wrong Title");

}  

//Checking the Text for the Sub Label

WebElement assertb=driver.findElement(By.id(APL.EMSG_EmailMsg_SubLbl_ID));

String b=assertb.getText();

 try

{

Assert.assertEquals("Click on the Sender Email to view its details.", b);

System.out.println("Main Title Name as Sub Label");

}

catch (Error e1)

{

System.out.println("Wrong Title");

}

//Clicking on the Child Window

//getting parent Id

String Currenthandle=driver.getWindowHandle();

System.out.println("parent window id:"+Currenthandle);

//handle the child window

Set<String> handles= driver.getWindowHandles();

handles.remove(Currenthandle);

//performing action on child window

driver.switchTo().window(handles.iterator().next());

Thread.sleep(3000);


//Clicking on the Email Message Menu Button
            if(driver.findElement(By.linkText("matrimonials@shaadi.com")).isDisplayed())

{

System.out.println("Link Name is Displaying");

driver.findElement(By.linkText("matrimonials@shaadi.com")).click();

System.out.println("Clicked on the Email Id Link Button");

Thread.sleep(2000);

}

else

{

System.out.println("Link Name is Not Displaying");

}


//Handing the Child Windows 

if(driver.findElement(By.name("Message Details")).isDisplayed())

{

System.out.println("Message Details Label is Displaying");
                driver.findElement(By.id(APL.EMSG_ChildWindow_Close_LnkBtn_ID)).click();

System.out.println("Clicked on the Close Button in the Child Window");

Thread.sleep(2000);

}

else


{

System.out.println("Message Details Label is Not Displaying");

}


}

}
4

2 に答える 2

0

Webdriver childDriver = Utility.getHandleToWindow("titleOfChildWindow"); childDriver.close();

于 2013-09-04T10:04:40.243 に答える
0
//after clicking button . switch to the window using this code

Set<String> winids = driver.getWindowHandles();
String mainWindow = winids.iterator().next();
String childWindow = winids.iterator().next();
driver.switchTo().window(childWindow);//this switches to the child window 

//after switching perform the operations which u want to perform on the child window
于 2014-01-07T13:03:57.607 に答える