You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:将Selenium ChromeDriver代码转换为EdgeDriver的实现方案

将Selenium ChromeDriver代码转换为EdgeDriver版本

转换后的完整代码

import time
import pandas as pd
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 替换Chrome相关服务导入为Edge版本
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager

'''locators'''
bank_cost_lt=(By.XPATH,"//*[@id='itembox-InstantBankDiscount']//a")
x_mark_lt=(By.XPATH,"//*[@id='twister-plus-dp-bg']/i")
partner_lt=(By.XPATH,"//*[@id='itembox-Partner']//a[@class='a-size-base a-link-emphasis vsx-offers-count']")

# 替换ChromeOptions为EdgeOptions
options = webdriver.EdgeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)
# 初始化Edge驱动,替换Chrome为Edge,使用EdgeChromiumDriverManager
driver = webdriver.Edge(service=Service(EdgeChromiumDriverManager().install()), options=options)
driver.implicitly_wait(0.5)
# driver.maximize_window()

df=pd.DataFrame(columns=['url','price','seller','bank offers','partner offers'])
cnt=0

def presence_of_element_click(by_locator, timeout):
    WebDriverWait(driver, timeout).until(EC.presence_of_element_located(by_locator)).click()

urls=["https://www.amazon.in/JBL-Cancellation-Headphones-Playtime-Assistant/dp/B096FYLJ6M/ref=sr_1_8?crid=OHZVHJG9Q7HN&keywords=jbl%2Bheadphones&qid=1672115942&s=electronics&sprefix=jbl%2Bheadphone%2Celectronics%2C235&sr=1-8&th=1"]

# urls = ["https://www.amazon.in/dp/B0BGZN7FWV?th=1"]
for url in urls:
    print(url)
    driver.get(url)
    time.sleep(3)
    WebDriverWait(driver, 180).until(lambda driver: driver.execute_script('return document.readyState') == 'complete')
    elem = driver.find_element('xpath','//*')
    source_code = elem.get_attribute("outerHTML")
    soup1 = BeautifulSoup(source_code, "html.parser")
    soup2 = BeautifulSoup(soup1.prettify(), "html.parser")
    price = soup2.find('span',{'class':'a-price aok-align-center reinventPricePriceToPayMargin priceToPay'}).span.text
    print(price)
    seller=soup2.find('div',{'id':'merchant-info'}).find('a').find('span').text
    print(seller)
    presence_of_element_click(bank_cost_lt,60)
    time.sleep(4)
    bank_=driver.find_element('id','InstantBankDiscount-sideSheet')
    source_code = bank_.get_attribute("outerHTML")
    soup1 = BeautifulSoup(source_code, "html.parser")
    soup2 = BeautifulSoup(soup1.prettify(), "html.parser")
    bank_offer_els=soup2.find_all('div',{'class':'a-section vsx-offers-desktop-lv__item'})
    lst=[]
    for val in bank_offer_els:
        lst.append(str(val.p.text).strip())
    presence_of_element_click(x_mark_lt,60)
    time.sleep(2)
    presence_of_element_click(partner_lt,60)
    time.sleep(2)
    bank_=driver.find_element('id','Partner-single-offer')
    source_code = bank_.get_attribute("outerHTML")
    soup1 = BeautifulSoup(source_code, "html.parser")
    soup2 = BeautifulSoup(soup1.prettify(), "html.parser")
    partner_els=soup2.find_all('div',{'class':'a-section vsx-offers-desktop-dv__content aok-block'})
    par_lst=[]
    for val in partner_els:
        par_lst.append(str(val.text).strip())
    presence_of_element_click(x_mark_lt,60)
    df.loc[cnt,'url']=url
    df.loc[cnt,'price']=price.strip()
    df.loc[cnt,'seller']= seller.strip()
    if lst:
        df.loc[cnt,'bank offers']=', '.join(lst)
    else:
        df.loc[cnt,'bank offers']='No offers'
    if par_lst:
        df.loc[cnt,'partner offers']=', '.join(par_lst)
    else:
        df.loc[cnt,'partner offers']='No Offers'
    cnt+=1
df.to_excel('output1.xlsx',index=False)

核心转换步骤

  • 替换驱动相关的导入模块:
    • 将from selenium.webdriver.chrome.service import Service改为from selenium.webdriver.edge.service import Service
    • 将from webdriver_manager.chrome import ChromeDriverManager改为from webdriver_manager.microsoft import EdgeChromiumDriverManager
  • 替换浏览器配置类:把webdriver.ChromeOptions()替换为webdriver.EdgeOptions(),两者的API几乎完全兼容,原有的偏好设置(如通知权限)无需修改
  • 替换驱动初始化语句:将webdriver.Chrome()改为webdriver.Edge(),同时传入Edge的Service实例,注意参数名从chrome_options改为标准的options(chrome_options是Chrome的专属旧参数,Edge使用通用的options参数)

内容的提问来源于stack exchange,提问作者Anirudh Sudarsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:05:20