私は、ページオブジェクトパターンでSerenity BDDを使用して、Flickrサイトのテスト自動化と書き込みテストを学習しています。イメージホバーでオーバーレイをテストするにはどうすればよいですか?
テストケース:メインメニューの[Explore]リンクをクリックすると、ページには「photo_title by author」というラベルの写真が含まれているはずです。画像上にマウスを置くと、このラベルがオーバーレイ表示されます。
これはExplorePage.classの一部です。テストを実行すると、私はNoSuchElementExceptionを取得します。
package serenityTest.pages;
import net.serenitybdd.core.pages.PageObject;
import net.thucydides.core.annotations.At;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindAll;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.util.List;
import static serenityTest.helpers.Waiter.waitForJSandJQueryToLoad;
@At("https://www.flickr.com/explore")
public class ExplorePage extends PageObject {
@FindAll({@FindBy(css = ".title")})
private List<WebElement> photoTitles;
@FindAll({@FindBy(css = ".attribution")})
private List<WebElement> photoAuthors;
@FindAll({@FindBy(xpath = ".//div[@class='view photo-list-photo-view awake']")})
private List<WebElement> photos;
public ExplorePage(WebDriver driver) {
super(driver);
}
public ExplorePage checkPhotoLabels() {
waitForJSandJQueryToLoad();
WebDriverWait waitForPhotos = new WebDriverWait(getDriver(), 10);
waitForPhotos.until(ExpectedConditions.visibilityOfAllElements(photos));
for (WebElement photo : photos) {
for (WebElement photoTitle : photoTitles) {
for (WebElement photoAuthor : photoAuthors) {
withAction().moveToElement(photo).perform();
photoTitle.isDisplayed();
photoAuthor.isDisplayed();
}
}
}
return this;
}
}
多分私は間違った方法でテキストをテストしています。または、ロケータに問題があります(私はXPathを含む多くのバリエーションを試しました)。
助けてもらえますか?事前に感謝