使用webdriver 2.40.0(從金塊包安裝)並在C#中編寫代碼我是 - 打開我公司網站的鏈接,生成證書錯誤頁面 - 點擊覆蓋鏈接元素讓我繼續到網站 - 點擊該頁面上的一個輸入按鈕,該頁面生成一個彈出窗口,其上也有一個證書錯誤頁面 我的問題是當我嘗試選擇流行窗口一「noSuchWindowException」被拋出,代碼:webdriver無法點擊與證書錯誤頁面彈出窗口
namespace webDriverDemo
{
class Program
{
static void Main(string[] args)
{
string setURL = "xxxxx";
IWebDriver driver = new InternetExplorerDriver(@"C:\Drivers");
driver.Url = setURL;
String loginPage = driver.CurrentWindowHandle;
var securityLine = driver.FindElement(By.Id("overridelink"));
if (!securityLine.Equals(null))
{
securityLine.Click();
}
var enterBtn = driver.FindElement(By.Id("EnterButton"));
enterBtn.Click();
//Select the pop up window
driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()");
driver.SwitchTo().Window("xxxx");
我已經試過:
driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()")
和
String riskPage = driver.CurrentWindowHandle;
,並切換到該窗口中,我也試着
driver.SwitchTo().Window();
,但我認爲問題是,我不能到達證書錯誤頁面的窗口名稱,並且無法選擇並在該頁面上添加元素並嘗試保存它作爲一個單獨的句柄。真的需要幫助!
謝謝!我已經使用://選擇彈出窗口 var riskPageHandle = driver.WindowHandles.FirstOrDefault(hwnd => hwnd!= loginPage); driver.SwitchTo()。Window(riskPageHandle); Console.WriteLine(「彈出窗口標題是:」+ driver.Title); var overRde = driver.FindElement(By.Id(「overridelink」)); overRde.Click();作品的魅力:) :) – user3438744
你能解釋一下var riskPageHandle = driver.WindowHandles.FirstOrDefault(hwnd => hwnd!= loginPageWindowHandle); ??我不是測試人員,我知道這是獲取並保存彈出窗口的窗口句柄,但不知道如何? – user3438744
這是[LINQ FirstOrDefault方法](http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b)語法。它發現列表中的第一個窗口句柄不是您的登錄頁面窗口句柄(您之前保存的)。由於只有2個打開的窗口,第二個窗口句柄屬於彈出窗口。 – Faiz