我的网页支持键盘导航,按下" 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?
感谢您的帮助
答案 0 :(得分:1)
您可以从 html 或正文标记开始:
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
答案 1 :(得分:0)
您可以使用execute_script()
测试焦点,并测试document.activeElement
这样的内容将返回当前处于活动状态的网络元素:
second = self.driver.execute_script("return document.activeElement")
答案 2 :(得分:0)
要在不保存变量中的前一个元素的情况下标记元素,可以使用ActionChains
actions = ActionChains(driver)
actions.send_keys(Keys.TAB)
actions.perform()
在循环中选中,直到您想要聚焦的元素为焦点。您可以通过查找当前活动元素并再次按Tab键(如果它不等于您要标签的元素)来执行此操作:https://stackoverflow.com/a/17026711/4163398