如何在使用Python Selenium时同时按Ctrl + A?

问题描述 投票:0回答:1

我正在使用如下所示的动作链和线路:

actions.click(elementimclickingon).send_keys(Keys.CONTROL + "A").perform()

我之前在上面的行中有后续操作,例如 .pause(1).send_keys(myvariablestring),但这在这里似乎并不相关。

无论上述情况如何,这都不起作用,因为密钥似乎没有同时发送。

如前所述,我已经尝试过:

actions.click(elementimclickingon).send_keys(Keys.CONTROL + "A").perform() 但它似乎没有同时发送 Ctrl + A 。我想要的结果只是发送一个“全选”命令。

python selenium-webdriver webdriver sendkeys ctrl
1个回答
0
投票

为此,您需要使用

key_down
key_up
方法以正确的链顺序按下和释放按键:

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

...

actions = ActionChains(driver)
actions.click(elementimclickingon).key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL).perform()

这是一个完整的最小示例,用于使用

Ctrl + A
选择所有文本并使用
Ctrl + C
复制它:

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

driver = webdriver.Edge()
driver.get("http://www.example.com")

element = driver.find_element(By.TAG_NAME, "body")

actions = ActionChains(driver)
# Ctrl + A
actions.click(elementimclickingon).key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL).perform()
# Ctrl + C
actions.key_down(Keys.CONTROL).send_keys("c").key_up(Keys.CONTROL).perform()

driver.quit()

如果您只想发送“全选”命令,您可以通过

execute_script
使用 JavaScript,如下所示:

driver.execute_script("document.execCommand('selectAll')")
© www.soinside.com 2019 - 2024. All rights reserved.