1

Я автоматизирую громоздкую задачу моего клиента с помощью Chrome, платного расширения, python и ChromeDriver. Мне нужно загрузить определенную страницу, а затем щелкнуть значок расширения в браузере, чтобы отобразить всплывающее окно на странице. Я не нашел лучшего способа автоматизировать щелчок по значку, поэтому я устанавливаю горячую клавишу для этого расширения для запуска.
Я использую Chrome 54 и ChromeDriver 2.25, и теперь я не могу отправлять горячие клавиши.
Это работает с более старыми версиями (без установки горячих клавиш для расширения):Нет горячих клавиш (ярлыков) работает в Chrome с помощью Chromedriver

import os 
from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
import selenium.webdriver.chrome.service as service 

ext_folder = os.environ["LOCALAPPDATA"] + "\\Google\\Chrome\\User Data\\Default\\Extensions\\blabla" 

chrome_options = Options() 
chrome_options.add_argument("load-extension=" + ext_folder) 
chrome_path = "Path\\To\\chromedriver.exe" 
service = service.Service(chrome_path) 
service.start() 
capabilities = {'chrome.binary': chrome_path} 
browser = webdriver.Remote(service.service_url, desired_capabilities=chrome_options.to_capabilities()) 

browser.get('https://amazon.com') 
browser.find_element(By.TAG_NAME, "body").send_keys(Keys.CONTROL + "m") # this would start the extension, but nothing happens 
browser.quit() 

Я не могу отправить любую горячую клавишу с помощью тега тела, я пытался. Я могу отправлять письма только в форме ввода, и горячая клавиша не работает с ней.
Я даже попытался Java со следующими результатами:

Actions actions = new Actions(browser); 
actions.keyDown(Keys.CONTROL).sendKeys("m").perform(); // doesn't work 
actions.sendKeys(Keys.chord(Keys.ESCAPE)).perform(); // doesn't work 
actions.sendKeys(Keys.chord(Keys.CONTROL, "m")).perform(); // doesn't work 
WebElement body = browser.findElement(By.tagName("body")); 
body.sendKeys(Keys.chord(Keys.ESCAPE)); // doesn't work 
body.sendKeys(Keys.chord(Keys.CONTROL, "m")); // doesn't work 
Robot bot = new Robot(); 
bot.keyPress(KeyEvent.VK_CONTROL); 
bot.keyPress(KeyEvent.VK_M); 
bot.keyRelease(KeyEvent.VK_M); 
bot.keyRelease(KeyEvent.VK_CONTROL); // doesn't work 

Я даже приложил яваскрипта код для записи на консоль что был поражен, и я никогда не смогу увидеть «м». Робот ничего не писал на консоль.
Я начинаю чувствовать, что полностью согласен с этой проблемой. Неужели никто не страдает от этого? Пожалуйста помоги!

+0

я в настоящее время переживает один и тот же вопрос в Chrome 61, ChromeDriver 3.6. Вы когда-нибудь находили решение? –

+0

Да, я тоже видел эту проблему, но не помог мне, я проиграл этот проект: D – monami

ответ