2014-10-19 75 views
0

我一直在硒和關閉了很長一段時間的麻煩現在。所以,我想我會創建一個很好的簡單的例子,並希望硒專家可以告訴我:Selenium SendKeys到JqueryUi Popup

  • 我做錯了什麼;或
  • 我開車的網站有什麼問題。

在本練習中,我創建了一個簡單的控制檯應用程序,以便登錄到圖書館網站。顯然,用戶名和密碼不正確。但事實是,在文本框中這是頁面上看到我下面要介紹的代碼甚至無法輸入的字符:

static void Main(string[] args) 
    { 
     ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService(@"E:\"); 
     var chromeOptions = new ChromeOptions(); 

     chromeDriverService.Port = 7788; 

     var driver = new ChromeDriver(chromeDriverService, chromeOptions); 

     var nav = driver.Navigate(); 
     nav.GoToUrl("http://sapln.ent.sirsidynix.net.au/client/charlessturt/"); 

     var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 

     wait.Until(ExpectedConditions.ElementExists(By.CssSelector("#libInfoContainer > div.loginLink > a"))).Click(); 

     wait.Until(ExpectedConditions.ElementExists(By.Id("j_username"))).SendKeys("gfhjdskaf"); 

     wait.Until(ExpectedConditions.ElementExists(By.Id("j_password"))).SendKeys("gfhdsjffd"); 

     driver.FindElementById("submit_0").Click(); 

     Console.ReadKey(); 
    } 

通過一切手段,試圖填充該文本框。我很想聽聽你是如何做到的。 我使用:硒的

  1. v.2.43.1使用Chrome
  2. ChromeDriver

回答

1

您的對話框在iframe打開的v.2.43的最新版本。在與登錄表單元素進行交互之前,您需要切換到該iframe。

我沒有測試你的代碼,但是你可以按照下面的例子中,通過刪除我的意見:

static void Main(string[] args) 
{ 
    ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService(@"E:\"); 
    var chromeOptions = new ChromeOptions(); 

    chromeDriverService.Port = 7788; 

    var driver = new ChromeDriver(chromeDriverService, chromeOptions); 

    var nav = driver.Navigate(); 
    nav.GoToUrl("http://sapln.ent.sirsidynix.net.au/client/charlessturt/"); 

    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 

    wait.Until(ExpectedConditions.ElementExists(By.CssSelector("#libInfoContainer > div.loginLink > a"))).Click(); 

假設你的iframe是第一個被發現,你可以使用類似...:

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0))); 

因爲你的iframe中沒有一個id,我們不能簡單地做:

driver.switchTo().frame("id of frame"); 

這將是超級convenie nt如果你可以給你的iframe一個ID。

現在,讓我們繼續與您的代碼:

wait.Until(ExpectedConditions.ElementExists(By.Id("j_username"))).SendKeys("gfhjdskaf"); 

    wait.Until(ExpectedConditions.ElementExists(By.Id("j_password"))).SendKeys("gfhdsjffd"); 

    driver.FindElementById("submit_0").Click(); 

一旦你登錄,您需要切換回默認的內容

driver.switchTo().defaultContent(); 

    Console.ReadKey(); 
} 

嘗試之前簡單地注入該iframe開關與對話進行交互,然後在嘗試對初始頁面進行其他操作之前,在最後注入defaultContent()開關,並且您很好。

祝你好運!

+0

你是對的。一個id會很棒。該網站不是我的編碼。我也不會使用iframe。但是你的代碼是好的(翻譯成C#)! – onefootswill 2014-10-19 08:50:42

+0

很高興我能幫助你! – bcar 2014-10-19 13:20:22

相關問題