Я автоматизирую громоздкую задачу моего клиента с помощью 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
Я даже приложил яваскрипта код для записи на консоль что был поражен, и я никогда не смогу увидеть «м». Робот ничего не писал на консоль.
Я начинаю чувствовать, что полностью согласен с этой проблемой. Неужели никто не страдает от этого? Пожалуйста помоги!
я в настоящее время переживает один и тот же вопрос в Chrome 61, ChromeDriver 3.6. Вы когда-нибудь находили решение? –
Да, я тоже видел эту проблему, но не помог мне, я проиграл этот проект: D – monami