首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制不会传递到selenium-java中新打开的页面

控制不会传递到selenium-java中新打开的页面
EN

Stack Overflow用户
提问于 2016-04-14 16:48:04
回答 1查看 86关注 0票数 0

我有两个网页,因此有两个独立的类。在第一个类中,我在第一个页面上执行操作,通过单击在同一个标签页中加载新页面的链接来执行操作。

代码语言:javascript
复制
    FirstClass {
    Driver.click();
    }


    SecondClass extends FirstClass {
    //code goes here
    }

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

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

如果我是正确的,那么问题不在于切换窗口。我也试着切换控件。但它不起作用。

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

以下是First Class的代码:

代码语言:javascript
复制
 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();

第二个类的代码是:

代码语言:javascript
复制
package scripts;
import java.util.Set;
import org.openqa.selenium.NoSuchElementException;
import org.testng.Assert;
import org.testng.annotations.Test;

import pom.ResponseManagerPage;

public class TestResponseManager extends TestSession {

@Test
public void TestResponseManagerPage() throws NoSuchElementException, InterruptedException
{
    ResponseManagerPage p=new ResponseManagerPage(driver);
    p.GetStatus();
    Set<String> JobWindows = driver.getWindowHandles();
    for(String curWindow : JobWindows) 
    {
        driver.switchTo().window(curWindow);
    }
    String title = driver.getTitle();
    Assert.assertTrue(driver.getTitle().equals(title));
}

}

EN

回答 1

Stack Overflow用户

发布于 2016-04-14 17:56:18

代码语言:javascript
复制
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#中。希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36618010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档