带有 VBA (Office 365) 的 Selenium Basic 不再工作

问题描述 投票:0回答:1

请在下面找到我之前运行正常的代码。 Chrome 115 之后,代码发生了一些变化,或者我不知道。我下载了与 chrome 版本号相同的 chromedriver 并复制到 seleniumbasic 文件夹,就像我之前使用的那样。

Option Explicit
Private sayfa As Selenium.ChromeDriver

Sub ojooo()


Set sayfa = New Selenium.ChromeDriver

Dim captcha As Selenium.WebElement

sayfa.Start
sayfa.Get "https://wad.ojooo.com/login.php"
sayfa.Window.Maximize
sayfa.FindElementByName("login_username").SendKeys "username"
sayfa.FindElementByName("login_password").SendKeys "password"

Set captcha = sayfa.FindElementByXPath("//iframe[@title='reCAPTCHA']")

captcha.ScrollIntoView True

sayfa.FindElementById("switchCaptcha").Click
sayfa.Wait 10000
sayfa.FindElementByName("Login2").Click
sayfa.FindElementByClass("closebtn_ads").Click

sayfa.Get "https://wad.ojooo.com/ads.php"

Dim Adresler As Selenium.WebElements
Dim Adresler2 As Selenium.WebElements
Dim Adres As Selenium.WebElement
Dim w As Selenium.Window

Set Adresler = sayfa.FindElementsByXPath("//a[@target='_blank']")

For Each Adres In Adresler

If Adres.IsDisplayed Then
sayfa.Wait 10000
Adres.ScrollIntoView True
Adres.Click ("href")
sayfa.Wait 20000
sayfa.SwitchToNextWindow
sayfa.Window.Close
sayfa.SwitchToPreviousWindow

Else

End If

Next Adres

sayfa.Quit

End Sub

如果我尝试运行它,它会立即给出错误

设置 sayfa = New Selenium.ChromeDriver

我不明白是什么问题。任何人都可以帮助我,我将不胜感激。

我使用的是 Office 365 windows 11 64 位

我尝试使用这些代码运行,但出现错误,我提到它无法打开 chrome

vba selenium-webdriver selenium-chromedriver office365
1个回答
0
投票

要说出确切的问题有点困难。您使用的是哪个版本的库?较旧版本的 Selenium 可能无法与较新版本的 chrome 一起使用。

我建议的唯一其他修复可能是检查您的浏览器是否处于无头模式?

我以前从未在 VB 中使用过 Selenium,但 Python 解决方案看起来像这样:

options = ChromeOptions()
options.headless = False
driver = webdriver.Chrome(options=options)
driver.get('http://selenium.dev')
driver.quit()

option.headless = False 是强制浏览器的 GUI 实际加载 Selenium。我之前遇到过 Playwright 的问题,这是由于 Chrome 被置于无头模式所致(在最新版本的 Chrome 上,大约在发布后一两天,这可能可以解释该错误)。

不过我想说,我以前在 Playwright 或 Selenium 上使用 Firefox 时从未遇到过问题。根据您已经为网络抓取/测试目的编写的内容,可能值得考虑切换浏览器。

© www.soinside.com 2019 - 2024. All rights reserved.