Selenium webdriver Selenium-无法单击google页面内的按钮

Selenium webdriver Selenium-无法单击google页面内的按钮,selenium-webdriver,Selenium Webdriver,我在点击谷歌页面内的按钮时遇到问题 我的脚本无法单击页面上的按钮 这是我们在安装任何应用程序时通常会看到的页面 此特定按钮不在框架中 该按钮以秒的延迟出现在页面上,我也尝试过隐式&WebDriver等待 我尝试了很多东西,但都没有成功 我提到了我尝试过的东西&我得到的结果 如果有人能帮我,我会非常感激的 我试过的东西 1) 尝试访问Id为Xpath的对象 d1.findElement(By.id(“提交\批准\访问”))。单击() 或 d1.findElement(By.xpath(//按钮[@

我在点击谷歌页面内的按钮时遇到问题

我的脚本无法单击页面上的按钮

这是我们在安装任何应用程序时通常会看到的页面

此特定按钮不在框架中

该按钮以秒的延迟出现在页面上,我也尝试过隐式&WebDriver等待

我尝试了很多东西,但都没有成功

我提到了我尝试过的东西&我得到的结果

如果有人能帮我,我会非常感激的

我试过的东西

1) 尝试访问Id为Xpath的对象

d1.findElement(By.id(“提交\批准\访问”))。单击()

d1.findElement(By.xpath(//按钮[@id='submit\u approve\u access'])。单击()

输出-什么也不发生。单击按钮(允许访问)后,脚本将平稳移动

2) 尝试使用Javascript单击对象

js.executeScript(“document.getElementById('submit\u approve\u access')。click()”

js.executeScript(“window.document.getElementById('submit_access')。click()”

在IE的控制台中,我使用了下面的按钮

document.getElementById('submit\u approve\u access')。单击()

输出-与步骤1相同

3) 通过检查IDE中的目标路径进行尝试,使用CSS并尝试以下操作

newwebdriverwait(D110000).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(“css=#submit#u approve_access”))。单击()

还尝试播放录制的脚本,但该脚本太粘在同一页上

输出-这次我得到了以下异常

警告:findElement引发WebDriverException(by.selector:css=#提交(u批准)访问)
org.openqa.selenium.InvalidElementStateException:元素状态无效:未能对“文档”执行“querySelector”:“css=#提交\批准\访问”不是有效的选择器。
(会话信息:chrome=33.0.1750.146)
(驱动程序信息:chromedriver=2.6.232923,平台=Windows NT 6.1 SP1 x86_64)(警告:服务器未提供任何堆栈跟踪信息)
命令持续时间或超时:23毫秒

4) 通过执行上面的示例尝试以下操作

wait.until(预期条件。元素的可视性(By.id(“提交\批准\访问”));
WebElement CLICK=d1.findElement(By.id(“提交\批准\访问”);
点击。点击();
System.out.println(“找到的元素”)


输出:这一次我在上面的代码之后使用了syso。所以在我执行任务时,它确实找到了打印元素。但是,它没有点击按钮

尝试使用
org.openqa.selenium.support.ui.WebDriverWait
类。当它寻找一个元素时,它将进行轮询,直到预期条件为true并返回该条件的结果。您可以阅读。

OP在示例4中使用WebDriverWait。@Saran,我尝试了以下WebElement myDynamicElement=(新WebDriverWait(d1,10).until(ExpectedConditions.presenceOfElementLocated(By.id(“submit\u approve\u access”);System.out.println(“Clicking Element”);myDynamicElement.click();System.out.println(“Element Clicked”);在第一次运行中,我提供了无效的id来验证ElementLocated的存在性,因此我只是等待,没有做任何事情,也没有打印“Element found”。在下一次运行中,我传递了有效的id并打印了Element found。我插入了myDynamicElement。单击();在下一次运行中,它打印了元素,但没有单击按钮。它会在#4上抛出错误吗?如果您等到元素可见,然后用javascript单击它,会发生什么情况?@MrTi它没有出错。控制一直到syso。但我这次将WebDriverWait test=new WebDriverWait(d1,15000);test.until(ExpectedConditions.visibilityOfElementLocated(By.id(“submit\u approve\u access”);WebElement CLICK=d1.findElement(By.id(“submit\u approve\u access”);CLICK.CLICK();js.executeScript(“document.getElementById(“submit\u approve\u access”)。CLICK());System.out.println(“找到的元素”);如果单击不起作用,那么我猜当您按下按钮时运行的javascript没有连接到您正在查找的元素。附近是否有
input
元素?可能是
a
元素?@MrTi我使用IE控制台中的同一行来验证它是否单击了按钮&它在那里工作得很好。js.executeScript(“document.getElementById('submit_approve_access')。click()”;这是屏幕截图MrTi&@Saran,问题得到了解决。我使用了以下方法&效果很好。WebDriverWait wait=new WebDriverWait(d1,20);WebElement element=wait.until(ExpectedConditions.elementtobelickable)(By.id(”提交(批准)元素。单击();非常感谢您的帮助。非常感谢。谢谢,阿玛