driver.navigate().to("http://www.google.com");
多窗体的情况使用driver.switchTo().window()
这是一个Sample:
Set<String> handles = driver.getWindowHandles();
handles.remove(driver.getWindowHandle());//去掉当前句柄
driver.switchTo().window(handles.iterator().next());
// 1 - 保存主窗口句柄
IWebDriver driver = new FirefoxDriver();
string mainWindowHandle = driver.CurrentWindowHandle;
// 2 - 标识弹出窗口
IWebDriver popup = null;
foreach (string winHandle in driver.WindowHandles)
{
popup = driver.SwitchTo().Window(winHandle);
if (popup.Title.Equals("弹出窗口的标题", StringComparison.InvariantCultureIgnoreCase))
break;
}
// 3 - 执行弹出窗口内的任何操作
popup.findElement(By.name("TextBoxName")).sendKeys("Enter TEXT");
popup.findElement(By.name("SaveButton")).click();
...
// 4 - 执行弹出窗口内的任何操作后关闭弹出窗口
// 方式一:点击弹出窗口内部元素(如<关闭>按钮)触发弹出窗口自己关闭
// popup.findElement(By.name("CloseButton")).click();
// 方式二:调用弹出窗口的WebDriver的Close方法
popup.Close();
// 方式一、二不能同时使用,否则测试抛出无法找到窗口异常(已经关闭)
// 5 - 返回主窗口
driver.SwitchTo().Window(mainWindowHandle);
注释:以上代码不能从Selenium IDE录制和导出到C#(WebDriver)获取
IWebDriver driver = new FirefoxDriver();
string mainWindowHandle = driver.CurrentWindowHandle;
// 2 - 标识弹出窗口
IWebDriver popup = null;
foreach (string winHandle in driver.WindowHandles)
{
popup = driver.SwitchTo().Window(winHandle);
if (popup.Title.Equals("弹出窗口的标题", StringComparison.InvariantCultureIgnoreCase))
break;
}
// 3 - 执行弹出窗口内的任何操作
popup.findElement(By.name("TextBoxName")).sendKeys("Enter TEXT");
popup.findElement(By.name("SaveButton")).click();
...
// 4 - 执行弹出窗口内的任何操作后关闭弹出窗口
// 方式一:点击弹出窗口内部元素(如<关闭>按钮)触发弹出窗口自己关闭
// popup.findElement(By.name("CloseButton")).click();
// 方式二:调用弹出窗口的WebDriver的Close方法
popup.Close();
// 方式一、二不能同时使用,否则测试抛出无法找到窗口异常(已经关闭)
// 5 - 返回主窗口
driver.SwitchTo().Window(mainWindowHandle);
注释:以上代码不能从Selenium IDE录制和导出到C#(WebDriver)获取
包含iframe的情况使用driver.switchTo().frame()
Sample貌似和这个差不多。。。明天交流回来把这个补上。。
好麻烦啊。。
Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找。
假设页面写成这样:
<input type="text" name="passwd"id="passwd-id" />
那么可以这样找到页面的元素:
通过id查找:
WebElement element = driver.findElement(By.id("passwd-id"));
或通过name查找:
WebElement element = driver.findElement(By.name("passwd"));
或通过xpath查找:
WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));