2017-01-27 108 views
1

我一直在試圖找到一種方法來確認光標在輸入字段內(模擬在該字段內單擊)。Selenium確認光標位置

有一種情況,如果某個字段條目未通過驗證,則會在網頁頂部調用錯誤消息。

錯誤消息是一個超鏈接,當按下時,滾動指向輸入字段所在的頁面,並將光標放在字段中。

有沒有辦法確認光標在框中?

由於

回答

2

當光標在文本字段中,這意味着該文本字段處於焦點或是有源元件。水豚不直接提供這種方法。但是,有幾個選項。

切換到有源元件

如果下降到底層硒驅動程序,你可以retrive的有源元件:

page.driver.browser.switch_to.active_element 
=> #<Selenium::WebDriver::Element:0x34409cfc id="0.6429182184051125-3"> 

隨着活性元素,你可以檢查,這是元素你期望:

# Use Capybara to find the element you expect to be in focus 
expected_element = page.find("#field_id") 

# Get the element that is actually in focus 
active_element = page.driver.browser.switch_to.active_element 

# Check that the two elements are the same 
# Note that you need to call `native` so that you are comparing Selenium elements 
expect(active_element).to eq(expected_element) 

使用evaluate_script

另一種方法是使用JavaScript獲取有關活動元素的一些細節。例如,以下內容返回焦點元素的ID:

active_id = page.evaluate_script("document.activeElement.id") 
expect(active_id).to eq('field_id') 
+0

我嘗試了兩種解決方案。在評估Javascript時,我預計會發現x但是沒有。 – Tom

+0

在點擊和期望之間添加2秒鐘的睡眠後,它就起作用了。謝謝 – Tom