我有两个网页,因此有两个独立的类。在第一个类中,我在第一个页面上执行操作,通过单击在同一个标签页中加载新页面的链接来执行操作。
FirstClass {
Driver.click();
}
SecondClass extends FirstClass {
//code goes here
}然后在第二个类中,我使用extend继承第一个类。但是当我在第二页的元素上执行操作时,它没有抛出这样的元素异常。
如果我在单击链接后执行第一个类本身的操作,则与第二个页面相关的所有内容都可以正常工作。但是当我创建第二个类并尝试执行操作时,我没有得到这样的元素错误。
如果我是正确的,那么问题不在于切换窗口。我也试着切换控件。但它不起作用。
请让我知道是什么问题和解决方案。提前谢谢你。
以下是First Class的代码:
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();第二个类的代码是:
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));
}}
发布于 2016-04-14 17:56:18
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#中。希望这能对你有所帮助。
https://stackoverflow.com/questions/36618010
复制相似问题