2012-06-08 47 views
0

我使用Selenium Web驅動程序進行測試,但無法過去登錄頁面。我正在使用的代碼:Selenium Web驅動程序 - 登錄事件未啓動

driver.Navigate().GoToUrl(baseURL + "URL"); 
driver.FindElement(By.Id("loginForm:username")).SendKeys("uName"); 
driver.FindElement(By.Id("loginForm:password")).SendKeys("pass"); 
driver.FindElement(By.Id("loginForm:login")).Click(); 

元素定位器是正確的,並登錄點擊正在發生的事情,但在那之後,我沒有登錄,但網頁是卡在那裏 - 沒有錯誤或東西。相同的代碼在IDE中工作。

我使用IE9也有更改的設置:

var options = new InternetExplorerOptions(); 
      options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 
      driver = new InternetExplorerDriver(options); 

任何建議如何解決這個問題?

+0

你試過了哪些驅動程序?你是否嘗試過不同的元素定位器?如果您在IDE中嘗試同樣的操作會發生什麼? – Arran

+0

我使用InternetExplorerDriver與指定的選項。我嘗試了不同的定位器,但正如我所說 - 按鈕點擊正在發生,但之後 - 沒有登錄事件。所以我認爲問題在別的地方。在IDE中,這是工作 – andree

+0

IDE是在Firefox中。您是否嘗試過使用firefoxDriver並查看問題是否特定於IEDriver? –

回答

1

這種情況經常發生在我身上,但不知道它是否與你的原因相同。

當您在本地運行測試時,所有操作(sendkeys,click等)都會很快發生。在用戶在字段loginForm:usernameloginForm:password中輸入文本之前,loginForm:login按鈕可以保持禁用狀態。因此,按鈕loginForm:login可能在點擊時未被激活。

所以我會建議使用明確的等待來檢查單擊它之前是否顯示元素ID loginForm:login這一步基本上沒用,但它所做的只是在「發送密鑰」到密碼文本框字段並單擊「提交」之間浪費一些時間。

同樣爲了快速檢查,您也可以在輸入密碼並單擊登錄按鈕之前執行與sleep 2類似的操作(使腳本睡眠2秒鐘)。

如果您最終計劃在遠程計算機上運行此操作,則不需要執行上述兩個步驟中的任何操作,由於計算機之間的通信造成的時間延遲足以使整個過程順利進行。

(在linkedin登錄頁面發生同樣的問題 - 除非輸入用戶名和密碼,否則登錄按鈕被禁用,但是webdriver執行每一步的速度,登錄按鈕在點擊時無效)。

相關問題