【问题标题】:Headless mode using selenium is not working使用硒的无头模式不起作用
【发布时间】:2021-01-22 15:18:15
【问题描述】:

由于 whatsapp 需要条形码才能扫描,我希望它第一次扫描,然后它将以无头模式运行。任何建议,这是我的代码?

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

options = Options()

options.headless=True

options.add_argument("headless")

#options.headless = True

options.add_argument("no-sandbox")

options.add_argument("start-maximized")

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

options = webdriver.ChromeOptions()

#options.add_argument(CHROME_PROFILE_PATH)

browser=webdriver.Chrome(executable_path='C:\\ChromeDriver\\chromedriver_win32\\chromedriver.exe', options=options)

browser.maximize_window()

browser.get('https://web.whatsapp.com/')

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    您可以对页面进行截图,然后访问它,用手机扫描它,它应该可以像在浏览器中扫描一样工作。我猜你可以使用 selenium 本身的截图功能。

    【讨论】:

    • 是的,但我想要一次扫描,之后它将直接以无头模式运行。
    • 那么您将不会打开 2 个浏览器,一个处于无头模式,一个处于正常模式。
    【解决方案2】:

    删除 options = webdriver.ChromeOptions() ,您再次将空选项对象分配给选项标识符。:

    同时添加远程调试端口访问无头浏览器的ui,

    在运行脚本之前关闭所有的chrome,

    from selenium import webdriver
    
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    
    options.headless=True
    
    options.add_argument("--remote-debugging-port=1559")
    
    options.add_argument(
    "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
    
    options.add_argument("no-sandbox")
    
    options.add_argument("start-maximized")
    
    options.add_argument("window-size=1900,1080");
    
    
    browser=webdriver.Chrome(executable_path='C:\ChromeDriver\chromedriver_win32\chromedriver.exe', options=options)
    
    browser.maximize_window()
    
    browser.get('https://web.whatsapp.com/')
    
    input("Scan the bar code and press enter")
    

    现在打开另一个 chrome 并导航到:

      http://127.0.0.1:1559
    

    点击可检查的链接:

    【讨论】:

    • 谢谢,但它会抛出类似“未知错误:无法在 127.0.0.1:1559 连接到 chrome”之类的错误。请帮助我解决这些问题。
    • @shreyasnaik 更新了答案使用 options.add_argument("--remote-debugging-port=1559")
    • 它给出超时错误,但是通过添加“options=chromeoptions()”它可以通过打开浏览器来工作。但它不是无头无脑地工作。
    • @shreyasnaik 测试了代码,它可以正常工作。您可以重新启动浏览器并重试吗?如果重启后超时,请更改端口
    猜你喜欢
    • 2021-09-04
    • 2017-12-09
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    相关资源
    最近更新 更多