selenium 3.0.2
safari 10 (using built in safari driver)
python 2.7.10
OSX 10.11.16(El Capitan)
如何使用 send_keys(Keys.Right) 多次执行按键事件(右/左/上/下)(即尝试使用按键重复按键动作来移动焦点)
示例:使用下面的代码三次无法输入右键。
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT)
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT)
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT)
不存在错误,只是没有执行第二次按键事件。但是,如果在序列中发送了另一个方向键,那么它可以工作,但是一旦使用一个键方向,那么相同的方向键就不能在同一个 safari 驱动程序会话中工作。
示例:如果在单个 Safari 驱动程序会话中按顺序执行以下操作,则:
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) #Works
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) #Doesn't Work
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) #Works
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) #Doesn't Work
例子:
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) #Works
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) #Works
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT) #Doesn't Work
driver.find_element_by_xpath("//body").send_keys(Keys.UP) #Works
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT) #Doesn't Works
预期结果:焦点应与调用发送键方法的次数相同。波纹管按键事件应将 safari10 浏览器中的选择移动到右侧的三个选择,向下的两个选择和向左的两个选择。
例子:
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT)
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT)
driver.find_element_by_xpath("//body").send_keys(Keys.RIGHT)
driver.find_element_by_xpath("//body").send_keys(Keys.DOWN)
driver.find_element_by_xpath("//body").send_keys(Keys.DOWN)
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT)
driver.find_element_by_xpath("//body").send_keys(Keys.LEFT)
实际结果:焦点只会向右移动一次。如果焦点在同一个方向,第二次按键甚至不会移动焦点。
注意:上述示例和步骤适用于 Firefox。