【问题标题】:Unable to click on a button within a frame - VBA Selenium ChromeDriver无法单击框架内的按钮 - VBA Selenium ChromeDriver
【发布时间】:2019-12-26 17:18:57
【问题描述】:

我目前正在努力解决有关通过 Selenium 和 ChromeDriver 单击按钮的问题。我目前正在使用 Excel-VBA 进行编码。

我在其他十几个网站上尝试了相同的代码,并且成功了。我只有以下一个问题。 我试图通过 CSS Selector、XPath、Name 找到按钮以运行 JS,但没有任何效果,所以我在这里请求您的帮助。
我还尝试添加隐式和显式等待,想象一下,没有任何效果。
目前,我没有选择。

我想点击RESET按钮

Dim driver As New Selenium.ChromeDriver
Set driver = CreateObject("Selenium.ChromeDriver")

driver.Get "https://www.prova.html"
Application.Wait (Now + TimeValue("0:00:02"))
driver.Window.Maximize
Application.Wait (Now + TimeValue("0:00:02"))
driver.ExecuteScript ("window.scrollTo(0, 360)")
driver.FindElementByXPath("/html/body/div[1]/div[3]/div/div/div[2]/div/div[5]/input[2]").Click

谢谢

【问题讨论】:

  • 您是否收到错误消息?

标签: vba selenium selenium-webdriver iframe webdriver


【解决方案1】:

问题在于页面上存在的 iframe 元素 - 您尝试单击的按钮包含在 iframe 元素中,因此您需要先切换到框架,然后才能与按钮交互.

// switch to frame
driver.SwitchToFrame(driver.FindElementByXPath("//iframe[@id='frame']"))

// locate RESET button
driver.FindElementByXPath("//input[@value='Reset']").Click

【讨论】:

  • 我错过了SwitchToFrame 中的driver. 调用,只是对那里的语法有点空白。我已经相应地更新了我的答案,感谢您指出这一点。
  • 非常感谢!在我的计算机中使用以下语法:driver.SwitchToFrame driver.FindElementByXPath("//iframe[@id='frame']") 谢谢没有你我做不到;)
【解决方案2】:

文本为RESET的元素在<iframe>内,所以您需要先SwitchToFrame(),然后找到所需的按钮,您可以使用以下解决方案:

  • 代码块:

    Dim driver As New Selenium.ChromeDriver
    Set driver = CreateObject("Selenium.ChromeDriver")
    
    driver.Get "https://www.merkur-win.it/scommesse.html"
    driver.Window.Maximize
    Application.Wait (Now + TimeValue("0:00:05"))
    driver.SwitchToFrame "frame"
    Application.Wait (Now + TimeValue("0:00:05"))
    driver.FindElementByXPath("//input[@class='sport_resetgiocata']").Click
    

【讨论】:

  • 非常感谢!它完美无缺!我刚刚学到了一些新东西,我很确定这可以在其他几个场合帮助我!再次感谢您
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 2013-03-08
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
相关资源
最近更新 更多