keystrokes with Google Chrome/Firefox and Selenium not working in Python
Asked Answered
H

1

1

Run the following:

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

# Get web driver going
cp = webdriver.ChromeOptions()
cp.add_argument("--browser.download.folderList=2")
cp.add_argument("--browser.helperApps.neverAsk.saveToDisk=image/jpg")
cp.add_argument("--browser.helperApps.neverAsk.saveToDisk=image/png")
cp.add_argument("--browser.download.dir=~/Downloads/")
driver = webdriver.Chrome(chrome_options=cp)

driver.get("http://www.google.com")
# Try to open a new tab
driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL, 't')

This was an attempt to open a new tab, but the code does not work. This is also the case when trying to use Firefox. For Firefox, this does work if I don't change the profile (using equivalent code), but does not work with a custom profile.

I would also like to be able to send Ctrl+S too, but it seems no commands involving a special character work (though I can still send_keys normal text, not involving special keys like Ctrl).

What can I do to be able to send Ctrl+T and Ctrl+S (especially the latter)?

Heading answered 20/6, 2017 at 22:33 Comment(0)
H
-1

You can use action chain as given below.

ActionChains(driver).key_down(Keys.CONTROL).send_keys('s').key_up(Keys.CONTROL).perform()
Heaviside answered 21/6, 2017 at 2:30 Comment(1)
This does not work, either for simulating Ctrl+S (as your solution does) or Ctrl+T.Heading

© 2022 - 2024 — McMap. All rights reserved.