首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >selenium findelement vba阻塞例程

selenium findelement vba阻塞例程
EN

Stack Overflow用户
提问于 2018-09-12 10:32:33
回答 2查看 1.1K关注 0票数 0

这是我的代码来打开一个网站和搜索对象。可能会有一个对象找不到,因此我必须对其存在与否进行搜索,以便执行或不执行操作。我试着用这种方法,但是如果我要找的物体,例行程序就会崩溃.

代码语言:javascript
复制
  Dim bot As New SeleniumWrapper.WebDriver
  bot.SetProfile "C:\Users\USER\AppData\Local\Google\Chrome\User Data\Default"
  bot.start "chrome", "https://website.com/"
  bot.Open "/"
  bot.wait 10000
  bot.findElementByClassName("_20NlL").Click
  bot.Wait 1000
  bot.findElementByClassName("C28xL").Click
  bot.Wait 1200
  bot.SendKeys text
  bot.Wait 2000
  Dim notext As WebElement
  Set notext = bot.findElementByClassName("_3WZoe", timeoutms:=0)
  If notext Is Nothing Then
  ......[this is the error that is shown to me][1]

https://i.stack.imgur.com/wWKzW.jpg

我错什么了?

如果我按照QHarr的指示将bot声明为webdriver或chromedriver,我很遗憾地得到了这个错误.

错误运行时33:会话未创建异常ecc。我用的是铬69.0

EN

回答 2

Stack Overflow用户

发布于 2018-09-12 11:39:18

我所看到的许多错误使我认为您已经将其翻译成另一种语言,或者使用的语法不是为当前硒基包装设计的。

1)对于selenium basic,以下timeoutms不是命名参数。正确的命名参数是timeout,所以报告的错误有一些奇怪之处,因为您应该收到一条命名参数错误消息。

2)如果使用Chrome,只需声明为Dim bot As New WebDriverNew ChromeDriver

3)硒基的正确方法是FindElementByClass

您的sendKeys很可能应该集中在特定的元素上。

代码语言:javascript
复制
bot.findElementByClass("C28xL").SendKeys Text

您可以检查元素当前是否存在于

代码语言:javascript
复制
bot.findElementByClass("_3WZoe", timeout:=0, Raise:=False)

同样,要记住导航父form/frame/iframe标记和等待时间的要点。

确保您使用的是最新的Chrome浏览器和ChromeDriver。ChromeDriver应该位于环境路径上,即位于环境路径上的文件夹中,并且路径部分(对于驱动程序)应该达到但不包括.exe (即到包含的文件夹级别)。您也可以将查找驱动程序的位置指定为代码中的语句。

票数 2
EN

Stack Overflow用户

发布于 2018-09-12 10:57:54

代码语言:javascript
复制
Set notext = bot.findElementByClassName("_3WZoe", timeoutms:=0)

您正在显式地设置timeoutms:=0。您没有时间尝试查找页面上的元素。从调用中提取该参数,给它时间来查找页面上的元素。它将在默认的超时值上运行(不要回想起它在我头上的位置),但是在大多数情况下应该会很快返回。您已经从前面的sendKeys命令等待了2秒,所以元素很可能已经加载(虽然没有保证)。

此外,您要寻找的元素完全可能驻留在页面上的某个框架中,在您有机会使用findElementBy<anyoftheoptions>之前,您必须切换到适当的框架。

这是我遇到的最大问题之一,就是缺乏足够的HTML来快速轻松地通过网页源,从而使项目“轻松”工作。我做了,经过了足够的尝试和错误,最终到达了那里。

此外,我强烈建议您将整个事件包装在一些错误处理中,以便能够捕获错误并从错误中优雅地恢复。您正在处理的web服务器和互联网和一般流量的范围以外的局域网-将有超时。如果你的代码不能被你控制的东西炸开,那就更好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52293093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档