2012-03-19 94 views
2

我现在用的是以下应用的框架:在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

请帮忙。

谢谢。

+0

可能重复[无法在名称和XPath中查找Selenium WebDriver中的元素](http://stackoverflow.com/questions/14727617/unable-to-find-element-in-selenium-webdriver-by-name-和-xpath) – kenorb 2015-05-21 22:31:50

回答

0

试试这个语法可能不正确,但试试这个逻辑。

WebElement MyFrame = driver.FindElement(By.Id("frame")); 
driver.SwitchTo().Frame(MyFrame) 

这对我在Java中很有用。

谢谢。

+0

感谢您的帮助。我试过你的方式,但仍然没有成功。我收到以下错误:错误:服务器没有响应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

+0

对不起,但如果它不以Frame标签开头,那么你不应该使用switchTo。只需使用Xpath,即完整的Xpath即可。使用Firebug或其他东西来获得Xpath。你能找到相同的使用IDE和不与Webdriver? – lAH2iV 2012-06-21 07:15:06

0

答案很简单。首先,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 
    } 
} 
0

这是一个老的文章,但仍然有效为我,因为我被困没有一个弹出框为好。问题是,一旦弹出窗口,我算的窗口数量:

int windows = driver.WindowHandles.Count(); 

之前和弹出窗口的数量后1

的帧数:

int totalframes = driver.FindElements(By.TagName("iframe")).Count(); 
弹出之前和之后为

。所以看起来好像框架已经存在,在页面中,只有被隐藏起来才会触发。弹出窗口显示为一个单独的窗口(您可以在其中选择要将报告导出到的文件类型)。我无法到达新窗口中的元素,但是我尝试在帧之间切换。