控件没有传递给selenium-java中新打开的页面

时间:2016-04-14 08:48:04

标签: java selenium selenium-webdriver automation

我有两个网页,因此有两个单独的课程。在第一课中,我通过单击在同一选项卡中加载新页面的链接在第一页上执行操作。

public int getTextViewEffectedWidth(TextView textView, String content){
            Rect bounds = new Rect();
            Paint paint = textView.getPaint();
            paint.getTextBounds(content, 0, content.length(), bounds);
            return bounds.width();
}

然后在第二节课中,我使用extend继承第一个类。但是当我对第二页的元素执行操作时,它不会抛出这样的元素异常。

如果我在点击链接后在第一个类中执行操作,则与第二页相关的所有内容都可以正常工作。但是当我创建第二个类并尝试执行操作时,我没有得到这样的元素错误。

如果我是正确的,那么问题不在于切换窗口。我也尝试过切换控件。但它没有用。

请让我知道问题和解决方案是什么。提前谢谢。

以下是头等舱的代码:

    FirstClass {
    Driver.click();
    }


    SecondClass extends FirstClass {
    //code goes here
    }

第二类代码是:

 import java.util.List;
 import java.util.Set;

 import org.testng.Assert;
 import org.testng.annotations.Test;

 import pom.AllJobsPage;
 import pom.DashboardPage;
 import pom.ResponseManagerPage;
 import pom.SessionPage;

 public class TestSession extends ClickLogin{

@Test
public void testSession() throws InterruptedException
{
    SessionPage s=new SessionPage(driver);
    String winHandleBefore = driver.getWindowHandle();
    s.SessionSubmit();
    for(String winHandle : driver.getWindowHandles())
    {
        driver.switchTo().window(winHandle);
        DashboardPage db=new DashboardPage(driver);
        String winHandleDashB = driver.getWindowHandle();
        db.ClickViewMore();
         Set<String> allWindows = driver.getWindowHandles();
        for(String curWindow : allWindows){
            driver.switchTo().window(curWindow);
        }
        AllJobsPage Aj=new AllJobsPage(driver);
        Aj.ClickResponseLink();

}

1 个答案:

答案 0 :(得分:0)

string BaseWindow = driver.CurrentWindowHandle;
System.Collections.ObjectModel.ReadOnlyCollection<string> handles = driver.WindowHandles;
if(handles.Count == 2)
       {
            foreach (string handle in handles)
            {
                if (handle != BaseWindow)
                {
                   //Do Something.
                }
            }
       }
driver.SwitchTo().Window(BaseWindow);

这对我有用。代码在C#中。希望这可能会有所帮助。