Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法单击帧内的按钮-VBA Selenium ChromeDriver_Vba_Selenium_Selenium Webdriver_Iframe_Webdriver - Fatal编程技术网

无法单击帧内的按钮-VBA Selenium ChromeDriver

无法单击帧内的按钮-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 =

我目前正在努力解决一个有关通过Selenium和ChromeDriver点击按钮的问题。我目前正在用Excel VBA编写代码

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

我想点击重置按钮

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']”)
谢谢,如果没有你,我就做不到;)非常感谢你!它工作得很好!我刚刚学到了一些新的东西,我确信这会在其他一些场合对我有所帮助!再次感谢你,非常感谢!它工作得很好!我刚刚学到了一些新的东西,我确信这会在其他一些场合对我有所帮助!再次感谢你