Я делаю тест автоматизации селена, где я получаю список веб-элементов, а затем получаю дочерние элементы каждого из них. но, к сожалению, когда я это делаю, он получает только дочерние элементы из первого элемента из списка, который является странным. может ли кто-нибудь указать, где пошло не так? Благодарю.Selenium: Элемент, не получающий дочерний элемент
@Override
public void performTest() {
performAction();
try {
for (WebElement element : search_rows) {
System.out.println(element.getAttribute("class"));
System.out.println(element);
assertElements(element, Constants.Selectors.AMITY_RESULT_ONE);
assertElements(element, Constants.Selectors.AMITY_RESULT_TWO);
assertElements(element, Constants.Selectors.AMITY_RESULT_THREE);
}
WebElement nextpage = WebDriverUtils.findElementByCssSelector(
driver, Constants.Selectors.AMITY_NEXT_PAGE);
WebDriverUtils.scrollToElement(driver, nextpage,
WebDriverUtils.BY_JAVASCRIPT);
nextpage.click();
performTest();
} catch (Exception e) {
// e.printStackTrace();
}
}
@Override
public void performAction() {
try {
WebElement searchpage = WebDriverUtils.findElementByXpath(driver,
Constants.Selectors.AMITY_SEARCHED_ITEMS);
search_rows = searchpage.findElements(By
.xpath(Constants.Selectors.AMITY_SEARCH_WRAPPER));
} catch (Exception e) {
// e.printStackTrace();
}
}
private void assertElements(WebElement element, String constant) {
search_result = element.findElement(By.xpath(constant));
System.out.println(search_result.getAttribute("class"));
System.out.println(search_result);
System.out.println(search_result.findElement(By
.xpath(Constants.Selectors.AMITY_FIRST_CHOICE)));
comparetext = search_result.findElement(
By.xpath(Constants.Selectors.AMITY_FIRST_CHOICE)).getText();
compareText(combo.getBeds(), comparetext);
System.out.println(search_result.findElement(By
.xpath(Constants.Selectors.AMITY_SECOND_CHOICE)));
comparetext = search_result.findElement(
By.xpath(Constants.Selectors.AMITY_SECOND_CHOICE)).getText();
compareText(combo.getBaths(), comparetext);
System.out.println(search_result.findElement(By
.xpath(Constants.Selectors.AMITY_THIRD_CHOICE)));
comparetext = search_result.findElement(
By.xpath(Constants.Selectors.AMITY_THIRD_CHOICE)).getText();
compareText(combo.getCarparks(), comparetext);
System.out.println(search_result.findElement(By
.xpath(Constants.Selectors.AMITY_NAME)));
comparetext = search_result.findElement(
By.xpath(Constants.Selectors.AMITY_NAME)).getText();
containsText(combo.getSuburb(), comparetext);
if (combo.getPrice() != null) {
System.out.println(search_result.findElement(By
.xpath(Constants.Selectors.AMITY_PRICE)));
comparetext = search_result.findElement(
By.xpath(Constants.Selectors.AMITY_PRICE)).getText();
if (!comparetext.equals("Contact Agent")) {
comparetext = parsePrice(comparetext);
comparePrice(combo.getPrice().substring(2), comparetext);
}
}
}
Вот константы:
public static final String AMITY_SEARCHED_ITEMS = "//div[@class='content-sidebar-wrap']";
public static final String AMITY_SEARCH_WRAPPER = "//div[@class='searches-wrapper']";
public static final String AMITY_RESULT_ONE = "//div[contains(@class, 'searchresultbox1')]";
public static final String AMITY_RESULT_TWO = "//div[contains(@class, 'searchresultbox2')]";
public static final String AMITY_RESULT_THREE = "//div[contains(@class, 'searchresultbox3')]";
public static final String AMITY_FIRST_CHOICE = "(//div[@class='searchinfo']//span)[1]";
public static final String AMITY_SECOND_CHOICE = "(//div[@class='searchinfo']//span)[2]";
public static final String AMITY_THIRD_CHOICE = "(//div[@class='searchinfo']//span)[3]";
public static final String AMITY_NAME = "//p[@class='p-searchname']";
public static final String AMITY_PRICE = "//div[@class='search-wrapp']//div[@class='searchprice']//span[@class='spn-search-price']//span[@class='searchprice']";
public static final String AMITY_NEXT_PAGE = ".pagination-next > a:nth-child(1)";
Спасибо. Мне действительно нужно быстро решить эту проблему.
Спасибо! Я забыл о .// thingy! Большое спасибо! – Cooperisduhace