2012-03-19 33 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(); 
彈出之前和之後爲

。所以看起來好像框架已經存在,在頁面中,只有被隱藏起來纔會觸發。彈出窗口顯示爲一個單獨的窗口(您可以在其中選擇要將報告導出到的文件類型)。我無法到達新窗口中的元素,但是我嘗試在幀之間切換。