【问题标题】:12296:26672:0420/163936.459:ERROR:browser_switcher_service.cc(238) XXX Init() Error in "Selenium Python"“Selenium Python”中的 12296:26672:0420/163936.459:ERROR:browser_switcher_service.cc(238) XXX Init() 错误
【发布时间】:2020-08-02 21:03:57
【问题描述】:

我使用的是版本 81.0.4044.113(官方版本)(64 位)。 它以前没有发生过,代码工作得很好。 但是几天后我再次运行它并出现了这个错误。

我正在使用这些模块->

from selenium import webdriver
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import TimeoutException
import csv
import time
from tkinter import *

def Authorization():
    time.sleep(15)
    username = driver.find_element_by_id("userInput")
    username.send_keys('username')
    driver.find_element_by_xpath("//*[@id='login-button']").click()

    time.sleep(5)
    password = driver.find_element_by_xpath("//*[@id='passwordInput']")
    password.send_keys('password')

    submit_button = driver.find_element_by_xpath("//*[@id='login-button']").click()

def Extractor():
    time.sleep(25)
    integrated_release = driver.find_elements_by_xpath("//*[@id='versionArea']/div/table/tbody/tr[2]/td[2]")
    global integrated_release_data
    integrated_release_data = [x.text for x in integrated_release]

    impact_release = driver.find_elements_by_xpath("//*[@id='versionArea']/div/table/tbody/tr[5]/td[2]")
    global impact_release_data 
    impact_release_data = [x.text for x in impact_release]

    build_platform = driver.find_elements_by_xpath("//*[@id='btkArea']/div/table/tbody/tr[2]/td[2]/span")
    global build_platform_data 
    build_platform_data = [x.text for x in build_platform]


def To_csv():
    csvData = [final_data]
    with open('data.csv', 'a') as csvFile:
        writers = csv.writer(csvFile)
        writers.writerows(csvData)
    csvFile.close()

def printtext():
    global bugName
    bugName = e.get() 
    print(bugName)

def kinter():
    root = Tk()
    root.geometry("500x100")
    root.title('xtractor')

    var = StringVar()
    label = Label( root, textvariable=var)
    var.set("Enter")
    label.pack()

    global e
    e = Entry(root)
    e.pack()
    e.focus_set()

    b = Button(root,text='submit',command=printtext)
    b.pack(side='bottom')
    root.mainloop()

kinter()

driver = webdriver.Chrome()

bugs = bugName.split(',')

driver.get("http........"+bugs[0])
bugname = [bugs[0]]

Authorization()
Extractor()
final_data = a+b+c+d+e
To_csv()

count = 0
for bug in bugs:
    try:
        if count == 0:
            count += 1
            continue

        driver.get("http:....."+bug)
        bugname = [bug]

        Extractor()
        final_data = a+b+c+d+e
        To_csv()
    except:
        continue

并且我安装了与 chrome 相同版本的 webdriver。 知道如何解决这个问题吗?

【问题讨论】:

  • 请在您的问题中包含完整的异常消息和堆栈跟踪。您还需要包含您编写的引发异常的代码。看到导入是好的,但这看起来不像是在执行导入语句时发生的错误。
  • 这是唯一出现并挂起代码的消息。我不想的代码,因为它没有打开。虽然,我已经更改了站点以及变量名。感谢 Greg 指出。
  • 您使用的是哪个版本的 chrome?
  • 如上所述,我使用的是版本 81.0.4044.113 (Official Build) (64-bit)。
  • 您使用的是哪个版本的 ChromeDriver?

标签: python selenium google-chrome selenium-webdriver selenium-chromedriver


【解决方案1】:

此错误消息...

ERROR:browser_switcher_service.cc(238)] XXX Init()

...暗示对on_init_ 的调用引发了错误。


分析

此错误在 bluetooth_adapter_winrt.cc 中定义,并且是 中包含的更改的直接影响,根据讨论中提供的详细信息 Chrome no longer accepts certificates that fallback to common name


解决方案

确保:

  • Selenium 升级到当前级别 Version 3.141.59
  • ChromeDriver 已更新到当前的ChromeDriver v84.0 级别。
  • Chrome 已更新到当前的 Chrome 版本 84.0 级别。 (根据ChromeDriver v84.0 release notes
  • 如果您的基本 Web 客户端 版本太旧,请卸载它并安装最新的 GA 和发布版本的 Web 客户端

其他注意事项

但据观察,可以通过在 Linux 上以 root 用户 (administrator) 身份运行 Chrome 来抑制此错误。但这会偏离ChromeDriver - WebDriver for Chrome 中提到的文档:

Chrome 在启动期间崩溃的一个常见原因是在 Linux 上以 root 用户(管理员)身份运行 Chrome。虽然可以通过在创建 WebDriver 会话时传递 '--no-sandbox' 标志来解决此问题,即 ChromeDriver 会话,因为这种配置不受支持且非常不鼓励。

理想情况下,您需要将环境配置为以普通用户身份运行 Chrome。


抑制错误

最后,根据Selenium Chrome Driver: Resolve Error Messages Regarding Registry Keys and Experimental Options 中的文档,可以通过添加参数来抑制这些错误日志:

excludeSwitches: ['enable-logging']

所以你的有效代码块将是:

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_experimental_option("excludeSwitches", ["enable-logging"])
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get("https://www.google.com/")

【讨论】:

    【解决方案2】:

    如果您使用 chocolaty 安装 webdriver,它将安装最新的,例如 chrome-driver 的 beta。因此,如果您使用的是 chrome 浏览器版本 81.x,您将获得 83.x 的驱动程序,因为 chrome 83 处于测试阶段。所以最好检查两次。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题 我尝试了很多,但找不到我需要的答案 我想出解决该错误的最佳方法是将您的 webdriver 更改为 geckodriver 并使用 firefox 而不是 chrome

      希望对你有帮助

      【讨论】:

      • 对不起,错误是关于 chrome 的,自从我切换到 nodejs x64 后,我遇到了同样的错误。这是一个与 x64 相关的错误。
      【解决方案4】:

      我也使用版本 81.0.4044.113(官方构建)(64 位)。 我遇到同样的事情 但它仍然成功运行。 现在我仍然找到解决这个问题的方法!

      【讨论】:

      • 即使我面临这个奇怪的问题,代码运行成功但抛出了这个奇怪的错误。您找到任何解决方案了吗?
      • 不,如果我找到解决我会告诉你。但是我工作很忙,我最近会找到解决的。然后如果你找到解决的方法,你也会告诉我方式。非常感谢
      猜你喜欢
      • 2020-08-03
      • 2020-08-06
      • 2020-08-02
      • 2023-03-10
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      相关资源
      最近更新 更多