因此,我创建了将卡添加到我的个人资料的成功测试,现在我想验证是否添加了卡,因此我想检查是否出现“您的卡已成功添加”文本,但是由于某种原因,className不位于。
这是一个 iframe 但是我确实输入它以添加卡片详细信息并提交它们,因此试图了解为什么它无法找到以下内容:
添加卡片
public void addCard(Card card) {
switchToCardIframe()
.fillInCardNumber(card.getCardNumber())
.fillInCardHolder(card.getCardHolderName())
.fillInExpiryDate(card.getExpiryDate())
.fillInCvv(card.getCvv())
.clickOnToggle()
.clickOnAddButton();
}
这就是我定位文本的方式
@FindBy(css = "payment-state-message")
private WebElement cardAddedIndicator;
测试
@Test
public void shouldSuccessfullyAddCard() {
myCards.addCard(cardData());
assertTrue(myCards.getCardAddedIndicator().isDisplayed());
}
我还尝试检查是否通过转义 iframe 显示了另一个元素,但没有运气,因此感谢任何帮助
driver.switchTo().defaultContent()
在从 css 定位器获取文本之前,我还尝试了 Thread.sleep() 10 秒但不是运气
这是等待初始化的基本页面
public class BasePage {
public WebDriver driver;
protected Wait wait;
public BasePage(WebDriver driver) {
initializePage(driver);
this.wait = new Wait(driver);
}
final protected void initializePage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 20), this);
}
}
你的 css 是错误的,所以不是
@FindBy(css = "payment-state-message")
private WebElement cardAddedIndicator;
尝试这个
@FindBy(css = ".payment-state-message")
private WebElement cardAddedIndicator;
也不要检查可见性 .isDisplay
而是调用一个文本方法。也放一些延迟/等待。
String actualMessage = myCards.getCardAddedIndicator().getText();
String expectedMessage = "Your card was successfully added"
然后根据他们的实际和预期行为断言这两个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句