如何切换到显示为一个弹出窗口
我现在用的是以下应用的框架:在C#如何切换到显示为一个弹出窗口
- 硒2.0
- 火狐
我需要编写一个测试,点击一个按钮并打开一个框架作为弹出窗口。该框架没有名称或ID。
帧中的源代码以“html”而不是“frame”开头。但是,当您右击窗口时,它会显示它是一个框架。所以,我认为这是一个框架,而不是一个窗口。
我曾尝试下面的代码,但不工作:
- driver.SwitchTo()框架(0)
我得到看起来像下面的错误:
error: No response from server for url
http://localhost:7055/hub/session/126a4485-48cb-4230-b0b0-69c4169b1852/element/%7B706f4a88-56a7-4813-af1b-8e137ce676af%7D/click
请帮忙。
谢谢。
试试这个语法可能不正确,但试试这个逻辑。
WebElement MyFrame = driver.FindElement(By.Id("frame"));
driver.SwitchTo().Frame(MyFrame)
这对我在Java中很有用。
谢谢。
感谢您的帮助。我试过你的方式,但仍然没有成功。我收到以下错误:错误:服务器没有响应url http:// localhost:7055/hub/session/73914c61-25d9-4dc7-9481-7fd84aae5d97/element /%7B11b0e937-3d20-4b9e-b53d-51274147f940% 7D /点击 – chuanl 2012-06-21 02:34:33
对不起,但如果它不以Frame标签开头,那么你不应该使用switchTo。只需使用Xpath,即完整的Xpath即可。使用Firebug或其他东西来获得Xpath。你能找到相同的使用IDE和不与Webdriver? – lAH2iV 2012-06-21 07:15:06
答案很简单。首先,iframe或frame不能“显示为弹出窗口”。你可能意思是一个单独的弹出窗口打开它自己的窗口句柄,它有自己的嵌入式iframe?如果是这样,只需使用driver.switchTo.window(句柄),然后尝试通过另外调用driver.switchTo.frame(0)来访问其框架。紧随其后的是driver.findElement(By)以及您需要采取的其他行动。
void switchToPopupWithClickAndClose() {
driver.switchTo.window(handle);
driver.switchTo.frame(0);
driver.findElement(By.id("elId")).click();
if (driver.getWindowHandles().size() > 1) {//popup still open
driver.switchTo.defaultContent();
driver.close();
driver.switchTo().defaultContent();// switch to default content of
// original window
}
}
这是一个老的文章,但仍然有效为我,因为我被困没有一个弹出框为好。问题是,一旦弹出窗口,我算的窗口数量:
int windows = driver.WindowHandles.Count();
之前和弹出窗口的数量后1
的帧数:
int totalframes = driver.FindElements(By.TagName("iframe")).Count();
弹出之前和之后为
。所以看起来好像框架已经存在,在页面中,只有被隐藏起来才会触发。弹出窗口显示为一个单独的窗口(您可以在其中选择要将报告导出到的文件类型)。我无法到达新窗口中的元素,但是我尝试在帧之间切换。
可能重复[无法在名称和XPath中查找Selenium WebDriver中的元素](http://*.com/questions/14727617/unable-to-find-element-in-selenium-webdriver-by-name-和-xpath) – kenorb 2015-05-21 22:31:50