我有一个Ext.MessageBox,当用户点击我想要的网址上的按钮时会出现。
Ext.MessageBox.confirm('Confirm', 'Are you sure you want to do that?',function(btnText){
if(btnText === "no"){
}
else if(btnText === "yes"){
// Do Something
}
}, this);
}
我想在此消息窗口上测试“是”和“否”按钮。由于我没有设置ID,任何人都可以告诉我如何访问这些按钮吗?
我试过像
这样的东西WebElement y = driver.findElement(By.xpath("//a[2]/span/span/span[2]"));
但它没有用。我已经检查了关于堆栈溢出的其他类似问题,但它并没有为我做好准备。 请帮助。
答案 0 :(得分:2)
我假设你在谈论这种MessageBox元素:
由于extjs动态生成元素ID,因此定位元素ID并不容易。
但是有一些模式可以帮助你与按钮互动:
所以你需要做的是首先在隐式等待的帮助下找到元素,然后单击它:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement yesButton = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.LinkText("Yes")));
yesButton.click();
答案 1 :(得分:1)
我自己也找到了解决问题的方法。我使用了Chrome XPath Helper扩展程序来查找此“是”按钮的XPath,并将其用作
WebElement yesButton = driver.findElement(By.xpath("/html/body/div/div/div/div/a[2]/span/span/span[2]"));
new WebDriverWait(driver, 5);
yesButton .click();
但@Viktor给出的解决方案是更清晰的解决方案,我已经接受了他的答案。