使用webdriver与Selenium1.0实现主页面跳转到子页面后又回到主页面的操作案例
package com.example.tests;
import com.thoughtworks.selenium.Selenium;
import com.thoughtworks.selenium.SeleneseTestCase;
import mx4j.tools.config.DefaultConfigurationBuilder.New;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.*;
import java.util.regex.Pattern;
import java.util.Iterator;
public class Baidutest extends SeleneseTestCase
{
private WebDriver driver = new FirefoxDriver();
@Before
public void setUp() throws Exception
{
String baseUrl = "https://www.wendangku.net/doc/6a1238599.html,/";
selenium = new WebDriverBackedSelenium(driver, baseUrl);
}
@Test
public void testBaidutest() throws Exception
{
driver.get("https://www.wendangku.net/doc/6a1238599.html,/");
System.out.println("url0 = " + driver.getCurrentUrl());
String url0 = driver.getCurrentUrl();
selenium.click("link=百度");
Thread.sleep(3000);
//输出当前页面的链接
System.out.println("url01 = " + driver.getCurrentUrl());
// 得到当前窗口的句柄
String currentWindow = driver.getWindowHandle();
// 得到所有窗口的句柄
Set
Iterator
//创建一个对象实现存放主页面句柄
String preWindowString = currentWindow;
while (it.hasNext())
{
String cruWindowString = it.next();
System.out.println("next = " + cruWindowString);
if (currentWindow == cruWindowString)
{
continue;
}
WebDriver window = driver.switchTo().window(cruWindowString);
}
System.out.println("url1 = " + driver.getCurrentUrl());
selenium.type("id=kw", "你好");
selenium.click("id=su");
Thread.sleep(3000);
// driver.close(); //关闭当前页面的方法不可行,执行这个方法后不能回到主页面进行操作!!
// selenium.click("link=百度");
// Thread.sleep(3000);
// 返回主页面
// driver.navigate().to(url0);// 可以跳转到主页面,但一开始打开的主页面还在,此方法不可行!!
// selenium.click("link=百度");
// Thread.sleep(3000);
//关闭当前页面的方法
driver.close();
//跳回到主页面
WebDriver window = driver.switchTo().window(preWindowString);
Thread.sleep(5000);
// driver.get(url0);
selenium.click("link=百度");
Thread.sleep(3000);
// 获取当前页面的网址
System.out.println("url2 = " + driver.getCurrentUrl());
}
@After
public void tearDown() throws Exception
{
selenium.stop();
}
}
/*//另外一个处理方式
public void switchToNewWindow(WebDriver driver,String
firstHandler){ /*获取所有窗口的Handler,并存放在Set集合里*/ Set
窗口的Handler*/
if(handlers.remove(firstHandler)){ System.out.
println("已删掉第一个窗口的Handler); } /*把Set集
合转换成Iterator*/ Iterator
iver.switchTo.window(it.next()); } } catch(Exception e){ System.out.println("没有可用的窗口
Handler"); }}
//思路就是所有窗口的Handler存放到Set集合中之后,把第一个窗口的Handler删掉,这
样就能百分百保证Set集合里只剩下第二个窗口的//Handler,所以就能安全稳定地定位到
第二个窗口。
//关于定位模态窗口,刚好我们项目中就有用到模态窗口,我用这个笨方法试过了,确实
可行!而且非常稳定。这里有两种情况:
?//一、WebDriver运行,初始化了一个浏览器窗口,然后在这个窗口点击某超链接或按钮,直接弹出模态窗口,则用这个笨方法可以正常//定位。
?//二、WebDriver运行,初始化了一个浏览器窗口,然后在这个窗口点击某超链接或按钮,先弹出一个常规窗口,然后在这个窗口再点击//超链接或按钮,才弹出模
态窗口,此时要先把第一个窗口关掉,再定位到模态窗口,否则定位不到,我也不知道为什么,反正实践过
//程中就发现是这样。
*/
1、在HTML中,()标记不可出现在
和标记符之间。(C) (A)