1

我的网页支持键盘导航,其中按“TAB”键以特定顺序在网页项目之间切换焦点。在焦点项目上按 Enter 键会打开弹出窗口/选择该项目。

我的自动化测试用例是: 1. 在整个网站上按 Tab 键并验证正确的项目是焦点。2. 在焦点项目上按 Enter 键并验证是否显示弹出窗口。3. 在焦点项目上按 Enter 键并确认它已被选中。

from selenium.webdriver.common.keys import Keys
# Qs: I want to test that the first time I press TAB key, the logo is in focus.          
# Currently. I am unable to achieve that without finding that element.
# How do I include the first element in the test?
first = self.driver.find_element_by_id("logo")
# The following code tabs to the second item on the page and brings it in focus. 
# Qs: How do I test that this item is in focus?
first.send_keys(Keys.TAB)
# How do I tab to the third item on the page without saving the second item 
# in a variable?
# Do I need to find the element in focus in order to select it by sending the 
# RETURN key?

谢谢你的帮助

4

3 回答 3

1

execute_script()您可以使用和测试焦点document.activeElement

像这样的东西会返回当前活动的 web 元素:

second = self.driver.execute_script("return document.activeElement")
于 2014-06-04T22:45:08.890 回答
1

您可以从htmlbody标签开始:

driver.find_element_by_tag_name("body")

或者:

driver.find_element_by_id("logo") # and then...
driver.switch_to_default_content()

现在您可以尝试单击 TAB。

要测试对元素的关注,您只需单击它,如果结果应该出现新窗口 - 您可以在.window_handles中进行检查,例如:

print browser.window_handles
于 2014-06-04T22:50:59.237 回答
0

要在不将前一个元素保存在变量中的情况下切换到元素,您可以使用 ActionChains actions = ActionChains(driver) actions.send_keys(Keys.TAB) actions.perform()

只需在循环中使用标签,直到您要聚焦的元素处于焦点。您可以通过查找当前活动元素并再次按 Tab 键来执行此操作,如果它不等于您想要使用 Tab 键的元素:https ://stackoverflow.com/a/17026711/4163398

于 2015-12-07T11:42:03.937 回答