2014-02-10 24 views
1

點擊輸入框硒點擊瀏覽器時,在回地面

<input id="dp1" class="span2" type="text" value="02-16-2012"> 

當瀏覽器是在回地面不工作,不顯示的日期選擇器彈出。 使用javasccript或jquery單擊輸入字段不會顯示日期選擇器彈出窗口。

driver.find_element_by_css_selector('#dp1').click() # works when the browser window is in the foreground 
document.querySelector('#dp1').click() # does not display the date picker popup 
$('#dp1').click() # does not display the date picker popup 

是我在this page上使用的三種技術。

我在硒網格上運行我的測試,並且每個查看顯示可以同時打開多個瀏覽器,可能會將包含datepicker元素的瀏覽器頁面放置在背景中,這會導致不可靠的測試。

所以,首要的問題是 -

爲什麼當瀏覽器在背景中硒的webdriver點擊不起作用?

第二個問題是 - 我該如何解決這個限制?

注: 使用硒或使用jquery/JS直接改變的值發送鍵是不一個選擇,因爲它繞過了日期選擇器彈出,並不實際測試UI方面,只有功能。

driver.find_element_by_css_selector('#dp1').send_keys('02-18-2014') 
$('#dp1').val('02-18-2014') # updates the date but without using the datepicker 

在Linux上使用Mac硒v2.39和firefox2.26和firefoxv17

+0

它會在後臺工作。我認爲你錯了某處。爲什麼不在selenium中使用javascript執行程序,然後嘗試運行jquery腳本,如$('#dp1')。click()via javascript executor。 – Innovation

+0

好吧,它沒有。我已經嘗試在瀏覽器處於前景和背景之間進行切換,並且只有當瀏覽器位於前景時,硒點擊纔會起作用。此外,JavaScript點擊不會加載日期選擇器彈出。 – Amey

+0

只需嘗試使用螢火蟲在問題中發佈的鏈接上的JavaScript代碼,就會看到我在說什麼。 – Amey

回答

1

所以我認爲你可以使用這個:

$('#dp1').datepicker("show"); 

使用selenium.It時,雖然會稍微用不同的方式完成。在使用上面的代碼時使用selenium javascript執行程序,然後解析html.You可以通過此鏈接獲得更好的主意。

http://www.mythoughts.co.in/2013/04/selecting-date-from-datepicker-using.html#.Uvr546FdSBs

+0

「show」命令有效。我讀了你的博客。好一個。我猜如果你繼續使用xpath,它會很容易。因爲我們可以使用selenium IDE輕鬆獲取xpath值。在我的情況下,我用硒酸點擊年和月。然而,點擊日不會那樣工作。所以我也使用了月份的xpath結構。有效。希望有人找到這個有用的。 –

0

有2種方式來顯示日期選擇器由於文檔(showOn選項日期選擇的 - http://api.jqueryui.com/datepicker/#option-showOn

可以證明你安裝日期選擇器元件的FOCUS

  1. - 在你的情況下集中(不點擊)
  2. 對日期選擇器的點擊按鈕

如果瀏覽器窗口處於活動狀態,並且您(或硒)點擊輸入,它將變得有重點,這就是爲什麼datepicker顯示。

當瀏覽器窗口不活動 - 看起來像點擊輸入不會使它集中 - 和datepicker不顯示。

你也可以用這種方式 - $('#dp1')。日期選擇器( 「節目」);但是它的情況下,你配置datepicker之前有一些選項(例如設置自定義日期格式) - datepicker(「show」)方法將取消這些選項(至少它對我來說這樣)。

簡歷:點擊datepicker按鈕或執行$('#dp1')。datepicker(「show」);但記得datepicker選項。