无法单击帧内的按钮-VBA Selenium ChromeDriver
我目前正在努力解决一个有关通过Selenium和ChromeDriver点击按钮的问题。我目前正在用Excel VBA编写代码 我在其他十几个网站上试过同样的代码,结果都成功了。我只有下面一个问题。 我试图通过CSS选择器XPath和Name找到运行JS的按钮,但没有任何效果,所以我在这里请求您的帮助无法单击帧内的按钮-VBA Selenium ChromeDriver,vba,selenium,selenium-webdriver,iframe,webdriver,Vba,Selenium,Selenium Webdriver,Iframe,Webdriver,我目前正在努力解决一个有关通过Selenium和ChromeDriver点击按钮的问题。我目前正在用Excel VBA编写代码 我在其他十几个网站上试过同样的代码,结果都成功了。我只有下面一个问题。 我试图通过CSS选择器XPath和Name找到运行JS的按钮,但没有任何效果,所以我在这里请求您的帮助 我还尝试添加隐式和显式等待,想象一下,没有任何效果。目前,我没有选择。 我想点击重置按钮 Dim driver As New Selenium.ChromeDriver Set driver =
我还尝试添加隐式和显式等待,想象一下,没有任何效果。
目前,我没有选择。
我想点击重置按钮
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
谢谢问题在于页面上存在的
iframe
元素--您尝试单击的按钮包含在iframe
元素中,因此您需要切换到该框架,然后才能与按钮交互
// switch to frame
driver.SwitchToFrame(driver.FindElementByXPath("//iframe[@id='frame']"))
// locate RESET button
driver.FindElementByXPath("//input[@value='Reset']").Click
问题是页面上存在的
iframe
元素--您尝试单击的按钮包含在iframe
元素中,因此您需要切换到该框架,然后才能与按钮交互
// switch to frame
driver.SwitchToFrame(driver.FindElementByXPath("//iframe[@id='frame']"))
// locate RESET button
driver.FindElementByXPath("//input[@value='Reset']").Click
文本为重置的元素位于
中,因此您需要先切换到框架()
,然后找到所需的按钮,然后使用以下解决方案:
- 代码块:
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
中,因此您需要先切换框架()
,然后找到所需的按钮,您可以使用以下解决方案:
- 代码块:
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
驱动程序。
在开关框架内调用,只是有点忽略了那里的语法。我已经相应地更新了我的答案,谢谢你指出这一点。非常感谢!在我的计算机中,使用以下语法:driver.SwitchToFrame-driver.findelementbypath(“//iframe[@id='frame']”)
谢谢,如果没有你,我就做不到;)我错过了驱动程序。
在开关框架内调用,只是有点忽略了那里的语法。我已经相应地更新了我的答案,谢谢你指出这一点。非常感谢!在我的计算机中,使用以下语法:driver.SwitchToFrame-driver.findelementbypath(“//iframe[@id='frame']”)
谢谢,如果没有你,我就做不到;)非常感谢你!它工作得很好!我刚刚学到了一些新的东西,我确信这会在其他一些场合对我有所帮助!再次感谢你,非常感谢!它工作得很好!我刚刚学到了一些新的东西,我确信这会在其他一些场合对我有所帮助!再次感谢你