Повторно открыть то же окно браузера, используя Селен Python и Firefox - PullRequest
0 голосов
/ 18 мая 2018

Эй, я пытаюсь создать автоматическую программу для отправки сообщений WhatsApp.В настоящее время я использую Python, Firefox и Selen для достижения этой цели.Проблема в том, что каждый раз, когда я звоню driver.get(url), он открывает новый экземпляр браузера Firefox, пустой, без воспоминаний о последнем запуске.Это заставляет меня сканировать штрих-код каждый раз, когда я его запускаю.

from selenium import webdriver
from selenium.webdriver.firefox.webdriver import FirefoxProfile

cp_profile = webdriver.FirefoxProfile("/Users/Hodai/AppData/Roaming/Mozilla/Firefox/Profiles/v27qat5d.whatsapp_profile")
driver = webdriver.Firefox(executable_path="/Users/Hodai/Desktop/geckodriver",firefox_profile=cp_profile)
driver.get('http://web.whatsapp.com')

#Scan the code before proceeding further
input('Enter anything after scanning QR code')

Я пытался использовать профиль, но, похоже, он не влияет.

cp_profile = webdriver.FirefoxProfile("/Users/Hodai/AppData/Roaming/Mozilla/Firefox/Profiles/v27qat5d.whatsapp_profile")
driver = webdriver.Firefox(executable_path="/Users/Hodai/Desktop/geckodriver",firefox_profile=cp_profile)

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Я думаю, что самый простой способ - сохранить файлы cookie после сканирования qrcode и вручную отправить их в Selenium.

# Load page to be able to set cookies
driver.get('http://web.whatsapp.com')

# Set saved cookies
cookies = {'name1': 'value1', 'name2', 'value2'}
for name in cookies:
    driver.add_cookie({
        'name': name,
        'value': cookies[name],
    })

# Load page using cookies
driver.get('http://web.whatsapp.com')

Для получения файлов cookie вы можете использовать консоль (F12), вкладку «Сеть», щелкнуть правой кнопкой мыши запрос, Копировать => Копировать заголовки запроса.

0 голосов
/ 21 мая 2018

В конце я использовал chromedriver для достижения своей цели.Я пробовал куки с маринадом, но это было немного сложно, потому что они запоминали куки только для того же домена.Поэтому я использовал данные пользователя для Chrome.теперь это работает как шарм.спасибо всем.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("user-data-dir=C:/Users/Designer1/AppData/Local/Google/Chrome/User Data/Profile 1")
driver = webdriver.Chrome(chrome_options=options,executable_path="C:\webdrivers\chromedriver.exe")
0 голосов
/ 18 мая 2018

Так не должно быть. Он открывает новое окно только при инициализации новой переменной или при повторном запуске программы. Вот код для хрома. Неважно, сколько раз вы позвоните driver.get(url), это откроет URL в том же окне браузера

from selenium import webdriver
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome(executable_path=r"C:\new\chromedriver.exe")
driver.get('https://www.olx.com.pk/lahore/apple/q-iphone-6s/?search%5Bfilter_float_price%3Afrom%5D=40000&search%5Bfilter_float_price%3Ato%5D=55000')
time.sleep(10)
driver.get('https://www.olx.com.pk/lahore/apple/q-iphone-6s/?search%5Bfilter_float_price%3Afrom%5D=40000&search%5Bfilter_float_price%3Ato%5D=55000')
time.sleep(10)
driver.get('https://www.olx.com.pk/lahore/apple/q-iphone-6s/?search%5Bfilter_float_price%3Afrom%5D=40000&search%5Bfilter_float_price%3Ato%5D=55000')
time.sleep(10)

Дайте мне знать, если проблема решена или вы пытаетесь сделать что-то еще.

...