selenium/chrome 无头模式自动登录问题

问题描述 投票:0回答:1

我正在尝试使用Python中的selenium和chrome的无头模式自动登录到https://login.upstox.com Chrome浏览器版本:123.0.6312.58 chromedriver版本:123.0.6312.58 硒版本:4.14.0

在无头模式下,它不会向我的手机发送 OTP,也不会移至下一页。但在没有无头模式的情况下它工作得很好。有人可以帮我让它在无头模式下工作吗?感谢您提前的帮助。

仅供参考:在 Firefox 中,它在 Windows 中的无头模式下工作正常,但在 Linux 上不起作用。我尝试过使用边缘但没有运气。

这是我的Python代码

import os
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from datetime import datetime
import requests


def init_chrome_webdriver():
    from selenium.webdriver.chrome.service import Service
    driver_path = os.path.join(os.getcwd(),'chromedriver.exe')
    service = Service(executable_path=driver_path,log_output="chromedriver.log")
    options = webdriver.ChromeOptions()
    options.add_argument("--headless=new")
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
                         
    return webdriver.Chrome(service=service, options=options)

def automatic_login(config):

    url='https://login.upstox.com'
    driver = init_chrome_webdriver()
    driver.get(url)
    time.sleep(5)
    
    phone = driver.find_element(By.TAG_NAME,"input")
    phone.send_keys(config['phone'])
    page = driver.find_element(By.TAG_NAME,"body")
    page.screenshot("before.png")
    time.sleep(5)
    next = driver.find_element(By.ID,"getOtp")
    next.click()
    time.sleep(5)
    page = driver.find_element(By.TAG_NAME,"body")
    page.screenshot("after.png")
    driver.quit()

if __name__=='__main__':

    creds = {}
    creds['pass'] = ''
    creds['phone'] = 'xxxxxxxx'  #Replace with phone number

    automatic_login(creds)
python google-chrome selenium-webdriver login-automation
1个回答
0
投票

当我遇到这个问题时,我设置了屏幕尺寸......尤其是当无头时......这样:

options.add_argument("--window-size=1920,1080")

(使用适合您的尺寸。)

© www.soinside.com 2019 - 2024. All rights reserved.