我正在尝试使用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)
当我遇到这个问题时,我设置了屏幕尺寸......尤其是当无头时......这样:
options.add_argument("--window-size=1920,1080")
(使用适合您的尺寸。)