在 selenium 中,无法单击错误消息 'OK' 按钮

In selenium, Not able to click on Error msg 'OK' button

我正在尝试使用 selenium 单击“确定”按钮,找不到元素。

objBrowser.findElement(By.xpath("//button[contains(text(), 'OK')]")).click();

确定按钮检查元素代码如下

<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" jQuery15109548211953493255="16">

<span class="ui-button-text"> Text - OK

用 cssSelector 试试这个。

objBrowser.findElement(By.cssSelector("button:contains('Ok')")).click();

将其包含在您的测试代码中

import org.openqa.selenium.Alert;

在打开警报消息的操作之后

试试下面的代码

Alert alert_test = driver.switchTo().alert();

alert_test.accept();

如果它不起作用,请告诉我错误消息。

对于模态弹出窗口window,请尝试以下方法并验证。

在打开警报消息的操作后使用以下代码

Robot robot = new Robot();

robot.keyPress(KeyEvent.VK_TAB);

robot.keyRelease(KeyEvent.VK_TAB);

注意: 有时需要几秒钟来识别出现的模态弹出窗口 window 但有时会有点长,所以下面你可以根据需要修改。

Thread.sleep(7000);

robot.keyPress(KeyEvent.VK_ENTER); 

robot.keyRelease(KeyEvent.VK_ENTER);

text()只选择当前上下文节点(button)下的文本子节点。 button.

中没有包含 OK 的文本节点

您最有可能需要:

By.xpath("//button[contains(span/text(), 'OK')]")

如果元素不是立即可见或不可点击,您需要等待。这通常通过 WebdriverWait 完成:

WebDriverWait wait = new WebDriverWait(webDriver, 3); // 3 seconds at most
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(...));

@Rupesh 和@Artjom B。谢谢

我检查过,你的两个答案都有效。

但真正的问题出在弹出错误消息的按钮上。 所以我在弹出窗口出现的删除按钮之前添加了睡眠,这适用于你的两个答案。

Thread.sleep(1000);
objBrowser.findElement(By.cssSelector("input[Value='Remove']")).click();

objBrowser.findElement(By.xpath("//button[contains(span/text(), 'OK')]")).click();