在selenium中,无法单击错误消息“确定”按钮

时间:2015-04-13 10:01:25

标签: java selenium-webdriver error-handling

enter image description here

我正在尝试使用selenium单击OK按钮,无法找到elememt。

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

4 个答案:

答案 0 :(得分:2)

text()仅选择当前上下文节点(button)下的文本子节点。 button中没有包含“确定”的文本节点。

您最有可能:

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

如果元素不是立即可见或可点击的,则需要等待它。这通常使用WebdriverWait:

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

答案 1 :(得分:1)

使用cssSelector尝试这个。

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

答案 2 :(得分:1)

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

import org.openqa.selenium.Alert;

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

尝试以下代码

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

alert_test.accept();

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

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

在打开警报消息的操作

后使用以下代码
Robot robot = new Robot();

robot.keyPress(KeyEvent.VK_TAB);

robot.keyRelease(KeyEvent.VK_TAB);

注意: 有时候识别模态弹出窗口需要几秒钟,但有时候会有点长,所以在时间之下你可以根据需要进行修改

Thread.sleep(7000);

robot.keyPress(KeyEvent.VK_ENTER); 

robot.keyRelease(KeyEvent.VK_ENTER);

答案 3 :(得分:0)

@Rupesh和@Artjom B.谢谢

我查了一下,你的两个答案都有效。

但真正的问题是弹出错误消息的按钮。 所以我在删除弹出窗口的按钮之前添加了睡眠,这对你的两个答案都有效。

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

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