Для Selenium с Python, как я могу заставить его нажать CTRL, SHIFT, i? - PullRequest
1 голос
/ 22 января 2020

Я только начал посещать Python класс, и это мой первый опыт программирования, кроме небольшого HTML. Я пытаюсь написать скрипт для Instagram и хотел бы получить браузер Chrome в мобильном представлении. Поэтому я думаю открыть инструменты разработчика (CTRL + SHIFT + i) и затем мобильный (CTRL + SHIFT + m). Как мне заставить Selenium сделать это с Python кодом?

String selectAll = Keys.chord(Keys.ALT, Keys.SHIFT,"z");


driver.findElement(By.tagName("html")).sendKeys(selectAll);

I пытался изменить это, чтобы заставить его работать, но это не помогло. Нужно ли мне что-то импортировать для работы вышеуказанного блока?

Вот код, который у меня есть и я пытаюсь перейти в мобильный режим после запуска существующего кода.

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

#mobile_emulation = { "deviceName": "iPhone 4" }

#chrome_options = webdriver.ChromeOptions()

#chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)

#driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',

                          #desired_capabilities = chrome_options.to_capabilities())

class InstaBot:
    def __init__(self,username,pw,):
        self.driver = webdriver.Chrome()
        self.username = username
        self.driver.get('https://instagram.com')
        sleep(2)
        self.driver.find_element_by_xpath("//a[contains(text(), 'Log in')]")\
            .click()
        sleep(2)
        self.driver.find_element_by_xpath("//input[@name=\"username\"]")\
            .send_keys(username)
        self.driver.find_element_by_xpath("//input[@name=\"password\"]")\
            .send_keys(pw)
        self.driver.find_element_by_xpath('//button[@type="submit"]')\
            .click()
        sleep(4)
        self.driver.find_element_by_xpath("//button[contains(text(), 'Not Now')]")\
            .click()
        sleep(4)

my_bot = InstaBot('username', 'password')

actions = ActionChains(driver)
actions.send_keys(Keys.CTRL, Keys.SHIFT, "i")
actions.perform()```


Ответы [ 2 ]

1 голос
/ 22 января 2020

Пожалуйста, попробуйте отправить ключи с ActionChains

self.driver = webdriver.Chrome(executable_path=r"C:\path\to\chromedriver.exe")

actions = ActionChains(self.driver) 
    actions.send_keys(Keys.CTRL, Keys.SHIFT, "i")
    actions.perform()

Импорт будет

from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.action_chains import ActionChains
0 голосов
/ 22 января 2020

Ключи выглядят немного странно.

Пожалуйста, попробуйте это:

from selenium import webdriver
mobile_emulation = { "deviceName": "Nexus 5" }
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
                          desired_capabilities = chrome_options.to_capabilities())

Ссылка: https://chromedriver.chromium.org/mobile-emulation

...