Python:无头模式选择旧版本的 chrome [英] Python: Headless mode picks up the older version of chrome

查看:45
本文介绍了Python:无头模式选择旧版本的 chrome的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 python & 自动发送短信.硒来自 https://voice.google.com/about.当我运行下面的代码时,它会选择谷歌浏览器的最新版本/实例并且工作正常.但是,当我以无头模式运行它时,它使用旧版本的谷歌浏览器(从屏幕截图猜测)并给出 TimeoutException() 异常.登录失败.

I am trying to automate sending a text message using python & selenium from https://voice.google.com/about. When I run below code, it picks up the lattest version/ instance of google chrome and works fine. But, when I run it headless mode, it uses an older version of google chrome(guessing from screenshot) and gives TimeoutException() exception. It fails while logging in.

我在 IE 模拟器中检查了登录框的元素 ID,它似乎是一样的.

I checked an element id of sign in box in an IE emulator and it appears to be the same.

        url = "https://voice.google.com/about"
        driver.get(url)
        time.sleep(5)
        driver.get_screenshot_as_file('C:\\Drivers\\Q11-0.png')

        # Click on a GET GOOGLE VOICE
        WebDriverWait(driver, 60).until(
            EC.element_to_be_clickable((By.XPATH, '//*[@id="heroToggle"]/button/span'))).click()

        print("Clicked on a get google voice")

        # Click on a WEB
        WebDriverWait(driver, 60).until(
            EC.element_to_be_clickable((By.XPATH, '//*[@id="heroToggle"]/div/button[3]'))).click()
        print("Clicked on a WEB button.")

        driver.get_screenshot_as_file('C:\\Drivers\\Q11-1.png')

        # Enter username and password
        # THIS IS WHERE IT FAILS
        WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.ID, 'identifierId')))
        email = driver.find_element_by_id('identifierId')
        time.sleep(10)
        email.send_keys('username')
        time.sleep(10)
        nextBtn = driver.find_element_by_xpath('//*[@id="identifierNext"]/content/span')
        nextBtn.click()

        driver.get_screenshot_as_file('C:\\Drivers\\Q11-2.png')


        # Enter password
        password = driver.find_element_by_xpath('//*[@id="password"]/div[1]/div/div[1]/input')
        password.send_keys('password')
        nextBtn = driver.find_element_by_xpath('//*[@id="passwordNext"]/content')
        nextBtn.click()

我在正常模式下运行时的截图,

Screenshot when I run in normal mode,

当我在无头模式下运行时的截图,

Screenshot when I run in headless mode,

驱动程序已正确更新.我不确定我做错了什么.任何帮助将不胜感激.

Drivers are updated properly. I am not sure what I am doing wrong. Any help would really be appreciated.

推荐答案

尝试覆盖 user-agent,这样它就不会包含 headless 标签.

Try to override user-agent, so it wont contains headless tag.

opts = Options()
opts.add_argument("user-agent=User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36")

driver = webdriver.Chrome(chrome_options=opts)

这篇关于Python:无头模式选择旧版本的 chrome的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆