Elias
Elias

Reputation: 191

Multikey press not working in python selenium

I am trying to press Ctrl+s and then click enter on a webpage to save its html. But the multikey pressing functionality is not working out. I have tried way1 and way2 but both didn't work. However, If I do action.send_keys('s') by without executing action.key_down(Keys.CONTROL) before it, it works fine. This is my full code:

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

driver = webdriver.Chrome(executable_path="chromedriver.exe")

# get method to launch the URL
driver.get("https://www.google.ca/")
time.sleep(3)

action = ActionChains(driver)

# click google search bar (to make sure driver is working)
driver.find_element_by_name("q").click()
print("passed1")
time.sleep(3)

# way 1
action.key_down(Keys.CONTROL).send_keys('s').key_up(Keys.CONTROL).perform()
print("passed2")

# way 2
action.key_down(Keys.CONTROL)
action.send_keys('s')
action.key_up(Keys.CONTROL)
action.perform()
print("passed2")

time.sleep(100)

driver.close()

Can someone please explain to me what is he issue? I've been trying to figure it out for an hour now.

Upvotes: 0

Views: 85

Answers (1)

Abhishek Rai
Abhishek Rai

Reputation: 2227

After looking around, I found that it is not advisable to interact with the browser for this purpose. It is better to get the page_source instead.

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r"C:\Program Files (x86)\Selenium\chromedriver.exe")

driver.get("http://www.example.com")
with open('page.html', 'w', encoding='utf-8') as f:
    f.write(driver.page_source)

Upvotes: 1

Related Questions