2014-10-01 37 views
0

我有一個watir-webserver Ruby腳本,我正在開發,我首先提示用戶輸入用戶名和密碼(使用Ruby-Tk)。watir-webdriver找不到或填入text_field

在任何情況下,我可以用這個代碼,打開網頁:

b = Watir::Browser.start 'https://connect.mypage.com/Home' 

在那之後,我把以下內容:

t1=b.text_field(:id => 'ctl00_cphBody_txtUserName').when_present.set @entry1.textvariable 

沒有填充

我有努力爲ctl00_cphBody_txtUsername編寫一個名字,但那也不起作用。

使用在Firefox中檢查,本場構造如下:

<input name="ctl00$cphBody$txtUsername" id="ctl00_cphBody_txtUsername" class="firstFocus" maxlength="50" type="text"> 

類firstFocus的是:

<script type="text/javascript"> 
     $(document).ready(function() { 
      jQuery('.firstFocus').focus(); 
     }); 
    </script> 
+0

一)您是否嘗試加載頁面之前類似的睡眠2「?也許這需要花費一兩秒鐘的時間來加載所有內容,而不是在加載頁面時加載所有內容。 when_present在阿賈克斯網站中不適合我。另外,在執行.set之前,請嘗試對元素執行.fire_event('focus')。 – daremkd 2014-10-01 15:36:50

+0

我在b = Watir :: Browser.start'https://connect.mypage.com/Home' – bentaisan 2014-10-01 15:38:10

+0

後放了一個睡眠(60),只有錯誤/例外情況發生在water-webdriver超時時。 – bentaisan 2014-10-01 16:15:30

回答

0

問題是,lo cator是區分大小寫的。

請注意,id屬性值爲「ctl00_cphBody_txtUsername」,但正在使用的定位符爲「ctl00_cphBody_txtUserName」。由於「N」不匹配「n」,元素從未被發現,這就是爲什麼when_present超時。

糾正在定位器的ID將解決這個問題:

t1=b.text_field(:id => 'ctl00_cphBody_txtUsername').when_present.set @entry1.textvariable 
0

如果我啓動瀏覽器並打開頁面如下圖所示,我沒有問題定位這兩個text_field的:

browser = Watir::Browser.new 
browser.goto 'https://connect.mypage.com/Home' 

#Then, the first item actually has a class, so I use that 
t1=browser.text_field :class => 'firstFocus' 
t1.set @entry1.textvariable 
相關問題