使用selenium发送多个Tab键按下

时间:2016-02-13 20:56:29

标签: python selenium selenium-webdriver

如何使用Selenium发送多个标签?

当我跑步时:

uname = browser.find_element_by_name("text")
uname.send_keys(Keys.TAB)

选择下一个元素。当再次执行uname.send_keys(Keys.TAB)时,没有任何事情发生 - 实际上选择了来自uname的下一个元素 - >所以它与运行一次时相同。

我怎样才能多次前进 - 基本上我会多次手动按TAB?

6 个答案:

答案 0 :(得分:14)

使用Action Chains

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

N = 5  # number of times you want to press TAB

actions = ActionChains(browser) 
for _ in range(N):
    actions = actions.send_keys(Keys.TAB)
actions.perform()

或者,因为这是Python,你甚至可以这样做:

actions = ActionChains(browser) 
actions.send_keys(Keys.TAB * N)
actions.perform()

答案 1 :(得分:2)

我想你也可以写

uname.send_keys(Keys.TAB + Keys.TAB + Keys.TAB + ... ) 

如果您只有2或3个命令要发送,这可能很有用。

答案 2 :(得分:0)

OP指出:“实际上选择了uname中的下一个元素”。

在第一个<TAB>键之后,您移出了元素,因此该元素将不再识别另外的<TAB> 。您需要找到 parent 元素并将密钥发送到 it

答案 3 :(得分:0)

sendkeys(Keys.Tab, Keys.Tab, Keys.Tab)工作正常。

答案 4 :(得分:0)

这种语法救了我:

ActionChains(driver).send_keys(Keys.TAB * 2).perform()

我尝试从the accepted answer使用它:

actions = ActionChains(browser)
actions.send_keys(Keys.TAB * 2)
actions.perform()

但是由于以后我想在同一脚本中使用三个TAB,所以遇到了问题。问题是,actions.send_keys(Keys.TAB * 3)只是在同一脚本中将添加actions中的前几行。因此,第二次使用此行之后,我没有按下三个TAB键,而是五个(即2 + 3)。此外,ActionChains.reset_actions() does not seem to work

答案 5 :(得分:-1)

uname.send_keys(Keys.TAB,Keys.TAB,Keys.TAB..)

为我工作