如何在VBScript中自动单击iframe中没有名称或ID的按钮

时间:2018-07-17 17:23:43

标签: vbscript

我正在尝试创建一个非常简单的vbscript,但是无法使其发挥我的作用。 我有一个网页叫它“ www.testing.com”,其中有许多按钮(其中有10多个)看起来和代码都相同:

<button type="button" class="text-uppercase promotion__btn btn btn-primary btn-sm">Get started now</button>

如您所见,按钮没有名称或ID,所以我在搜索所有按钮中的第一个按钮时都找不到任何解决方案。

我打开网页的代码非常简单:

set IE = createobject("internetexplorer.Application")
IE.statusbar = false
IE.menubar = false
IE.toolbar = flase
IE.visible = true

IE.navigate("www.testing.com")

wscript.sleep(2000)

我尝试使用此代码未成功:

For Each btn In IE.Document.getElementsByTagName("button")
      If btn.type = "button" Then 
             btn.Click()
             Exit For
      End If
Next

感谢帮助。 谢谢您的时间


编辑:


用户Lankymart推荐'IE.document.getElementsByTagName("button")(0).Click()确实单击了页面上的第一个按钮,但没有单击我需要的按钮。

此命令单击的按钮具有代码:<button class="strong-action-button icon-plus js-create-new-catalog full-width">Create New Catalog</button>

当我尝试单击代码为<button type="button" class="text-uppercase promotion__btn btn btn-primary btn-sm">Get started now</button>

的按钮时

如您所见,我要单击的按钮具有 type =“ button” ,因此我试图找到一种方法将Lankymart命令与其他可以帮助我点击的按钮进行匹配在其代码中具有该类型的按钮。

我尝试了以下代码,但是没有单击任何内容,也没有收到任何错误消息,因此我认为自己做错了事:

For Each btn In IE.document.getElementsByTagName("button") 
     If btn.type = "button" Then 
          btn.Click()
          Exit For
     End If
Next

编辑2:


我的代码现在看起来像这样:

set IE = createobject("internetexplorer.Application")
IE.statusbar = false
IE.menubar = false
IE.toolbar = false
IE.visible = true
IE.navigate("www.testing.com")
wscript.sleep(8000)
For Each btn In IE.document.getElementsByTagName("button") 
     If btn.innerText = "Get started now" Then 
           btn.Click()
           End If
Next

运行该脚本可以打开网站,但是没有任何点击。 我认为问题在于,它只能找到一个按钮标签,即“创建新目录”。我通过将FOR循环切换到以下代码进行了测试:

Set results = ie.document.all.tags("button")
For Each button In results
  WScript.Echo button.innerText
Next

运行此代码后,唯一的输出是“创建新目录”,我不明白为什么会这样。在代码的“检查元素”中搜索显示页面中有51个标签,那么为什么只找到一个而不是另外50个按钮?


编辑3:


所以我认为问题是document.getElementsByTagName从我正在使用的网站的HTML返回代码,但是当我单击“检查”以查看按钮的代码时,我想单击代码与HTML代码完全不同(如果我单击“查看页面源代码”,则会显示该代码)。 这可以成为问题吗?如果是这样,我该如何解决? 如果有人对我如何用另一种编程语言实现目标有想法-我愿意接受建议,那就不必是VBscript 。谢谢

1 个答案:

答案 0 :(得分:0)

主要问题的解决方案是:

此代码搜索带有标签的按钮,该标签上的按钮上的文本为“立即开始”。这样,您基本上不需要按钮ID或名称。

For Each btn In IE.document.getElementsByTagName("button") 
     If btn.innerText = "Get started now" Then 
           btn.Click()
           End If
Next

然后,我遇到了另一个问题,即使使用该代码也无法正常工作。因此,用户SearchAndResQ指出,就我而言,该按钮位于iframe下,要访问该按钮,我需要导航至iframe,然后查找要单击的按钮。

感谢SearchAndResQ,JNevill和Lankymart抽出宝贵时间为我提供帮助。