我正在使用如下所示的动作链和线路:
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 。我想要的结果只是发送一个“全选”命令。
为此,您需要使用
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')")