12296:26672:0420/163936.459:ERROR:browser_switcher_service.cc(238) XXX Init() “Selenium Python”错误

Adi*_*nha 14 python selenium google-chrome selenium-chromedriver selenium-webdriver

我使用的是版本 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
Run Code Online (Sandbox Code Playgroud)

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

Deb*_*anB 1

这个错误信息...

ERROR:browser_switcher_service.cc(238)] XXX Init()
Run Code Online (Sandbox Code Playgroud)

...意味着调用引发on_init_了错误。


分析

此错误在bluetooth_adapter_winrt.cc中定义,并且是根据讨论中提供的详细信息在中合并的更改的直接影响Chrome 不再接受回退到通用名称的证书


解决方案

确保这件事:


其他注意事项

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

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

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


抑制错误

最后,根据Selenium Chrome 驱动程序中的文档:解决有关注册表项和实验选项的错误消息,可以通过添加参数来抑制这些错误日志:

excludeSwitches: ['enable-logging']
Run Code Online (Sandbox Code Playgroud)

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

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/")
Run Code Online (Sandbox Code Playgroud)