我正在尝试使用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
答案 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();