当前位置: 首页 > 知识库问答 >
问题:

无法单击按钮-JavaSelenium WebDrive

沈宏朗
2023-03-14

我正在尝试使用Java Selenium Web驱动程序单击弹出窗口中的“保存”按钮,但是它会引发异常

消息:元素当前不可见,因此可能不会与命令持续时间交互

我可以看到“保存”按钮在我的弹出窗口中处于活动状态。我不知道它抛出异常的原因。

我正在尝试单击的“保存”按钮的 HTML 代码,

</div>
<br>
<br>
<br>
<hr>
<button class="btn btn-primary" style="margin-left: 10px" ng-click="saveData()" data-dismiss="modal" type="button">Save</button>
<button id="buttonmodalcancel" class="btn btn-default" ng-click="cancel()" type="button">Cancel</button>
</div>

firepath:html/body/div[6]/div/div/div/dir[2]/div/div//button[1]。

我没有使用XPath作为html /正文/div之后的内容,不断变化。

Java我使用的代码:

driver().manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver().findElementByXPath("//*[contains(text(), 'Save')]").click();

共有3个答案

陶高扬
2023-03-14

当你收到这个错误时,我建议你检查xpath或css选择器是否与一个且只有一个元素相关。
我有时会使用单击第一个显示元素的方法。基本上,它看起来像这样(你可能需要纠正它):

public void clickOnFirstDisplayedElement(String path){
    // Retrieve all the elements of the page that make sense with the xpath
    int i = driver.findElements(By.xpath(path)).size();
    for(int x = 0; x < i; x++){
        int y = x + 1;
        boolean isDisplayed = driver.findElement(By.xpath(path)).isDisplayed();
        if(isDisplayed){
            driver.findElement(By.xpath("(" + path + ")[" + y + "]"));
            x = i;
        }
    }
}

希望它有所帮助。

冯驰
2023-03-14

我找到了暂时解决这个问题的方法。我遇到的问题是xpath并不总是相同的,它一直以指定的模式变化。我为一个元素获得的示例xpath,

html/正文/除法[6]/除数/分度/分度/分度/除数/按键[1] html/正文/除数[5]/分红/分红/分度/分度/分页/按钮[1] html/正文/分页[2]/分红/分红/分度/分页/除数/按键[1]

因为div中的数字是我的xpath中唯一的变量,所以我使用了xpath下面的,

driver().findElement(By.xpath("html/body/div[*]/div/div/div/div/div/div/button[1]")).click();
万德海
2023-03-14

首先,你的代码看起来是错误的。试试这个:

driver.manage().timeouts().implicitlyWait(10, "DefaultTimeOutInSec")), TimeUnit.SECONDS);
driver.findElement(By.xpath("//*[contains(text(), 'Save')]")).click();

< code>driver变量(调用)应该在没有大括号的情况下使用;

其次,您可以使用替代的css选择器,因为它们工作得更快:

String buttonCss="button.btn.btn-primary";
driver.findElement(By.cssSelector(buttonCss)).click();

希望这对你有用

 类似资料:
  • 我正在尝试通过xpath,css,ID...但什么都管用。 我总是得到错误:没有这样的元素:无法定位元素 我添加了一个明确的等待,但它仍然不起作用。 你能帮帮我吗? 单选按钮

  • 我试图用硒点击“下一页”按钮,但没有成功。我使用了正确的CSS选择器还是应该把它换成别的东西?

  • 我正在尝试并自动导航到外部网站。为此,我需要单击一个按钮(在完整日历中显示下一周)。Vaadin的Fullcalendar插件如下所示。 该按钮在HTML中定义为(Electron 80 developer tool): 其xpath(来自Firefox 68开发工具)定义为: 所以我在Selenium IDE中添加了一个单击命令,目标字段中有以下文本: 但当然,由于所有按钮(即上一个或今天的按钮

  • 问题内容: HTML代码: 使用类名,我试图单击按钮,但无法单击。 我尝试了以下代码: 问题答案: 您可以尝试通过获取它。据我所记得,这只是一堂课。

  • 我用selenium加载一个页面:http://www.legorafi.fr/接下来,我尝试单击“Tout Accepter”按钮,但即使使用css选择器,它也不起作用。是给饼干的。 我试过这样的方法: 这是带有文本“Tout Accepter”的蓝色按钮 我该怎么办?