【问题标题】:Send multiple tab key presses with Selenium使用 Selenium 发送多个 tab 按键
【发布时间】:2016-05-24 22:30:35
【问题描述】:

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

当我跑步时:

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

下一个元素被选中。当再次执行uname.send_keys(Keys.TAB) 时,什么也没有发生 - 实际上来自uname 的下一个元素被选中 → 所以它与运行一次时相同。

我怎样才能多次向前跳 - 基本上就像我多次手动按 TAB 一样?

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    这个语法救了我:

    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 的前几行。所以在我第二次使用这条线之后,我得到了五个(即 2 + 3)而不是想要的三个 TAB 键。此外,ActionChains.reset_actions() does not seem to work.

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:
        uname.send_keys(Keys.TAB, Keys.TAB, Keys.TAB..)
        

        为我工作。

        【讨论】:

        • 字面意思是“Keys.TAB..”?
        • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
        【解决方案4】:

        我觉得你也可以写

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

        如果您只有两个或三个要发送的命令,这可能会很有用。

        【讨论】:

          【解决方案5】:

          正如 OP 所说:“实际上选择了来自 uname 的下一个元素”。

          在第一个<TAB> 键之后,您已离开该元素,因此不会再有<TAB>s 被该元素识别。您需要找到 parent 元素并将键发送到 it

          【讨论】:

            【解决方案6】:

            使用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()
            

            【讨论】:

            • 就我而言,我需要导入 Keysfrom selenium.webdriver.common.action_chains import Keys
            • 对我来说是from selenium.webdriver.common.keys import Keys
            • 我可以使用send_keys(Keys.TAB) 将光标移动到确定 按钮,但send_keys(Keys.ENTER) 没有任何作用。 焦点不在文件下载对话框上。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-01
            • 2020-07-07
            • 1970-01-01
            • 2015-06-28
            • 2012-04-19
            • 2021-12-17
            相关资源
            最近更新 更多