1
我一直在試圖找到一種方法來確認光標在輸入字段內(模擬在該字段內單擊)。Selenium確認光標位置
有一種情況,如果某個字段條目未通過驗證,則會在網頁頂部調用錯誤消息。
錯誤消息是一個超鏈接,當按下時,滾動指向輸入字段所在的頁面,並將光標放在字段中。
有沒有辦法確認光標在框中?
由於
我一直在試圖找到一種方法來確認光標在輸入字段內(模擬在該字段內單擊)。Selenium確認光標位置
有一種情況,如果某個字段條目未通過驗證,則會在網頁頂部調用錯誤消息。
錯誤消息是一個超鏈接,當按下時,滾動指向輸入字段所在的頁面,並將光標放在字段中。
有沒有辦法確認光標在框中?
由於
當光標在文本字段中,這意味着該文本字段處於焦點或是有源元件。水豚不直接提供這種方法。但是,有幾個選項。
切換到有源元件
如果下降到底層硒驅動程序,你可以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')
我嘗試了兩種解決方案。在評估Javascript時,我預計會發現x但是沒有。 – Tom
在點擊和期望之間添加2秒鐘的睡眠後,它就起作用了。謝謝 – Tom