У меня проблема с тем, что XPath возвращает неправильный элемент в коде, но работает так, как задумано, когда я помещаю его в свой браузер и ищу элемент с таким xpath.
Путь, который выполняет код, возвращает div следующего xpath.
Например, xpath:
//div [@class="product justify-content-md-center"][1]/h2
возвращает 2-й элемент вместо 1-го, как и должно быть, но когда я вставляю его в браузер, он получает правильный элемент, поэтому я думаю, что это не проблема xpath. Я использую автоматизацию огурца безмятежности с Java.
Я пытаюсь получить элементы с моего сайта проекта, в котором есть каталог с 12 продуктами. Вот HTML-код с php-кодом, в котором перечислены 12 продуктов:
$num = $stmt->rowCount();
if ($num > 0) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
extract($row);
echo "<div class='product justify-content-md-center'>";
echo "<img class='beerPicture' src='beers/{$picture}' style='height: 130px; width:130px'>";
echo "<div class='click-callback'></div>";
echo "<h2 class='header my-3 text-truncate'>{$name}</h2>";
echo "<p class='description' style='display: none;'>{$description}</p>";
echo "<p class='price'>{$price} lv.</p>";
if ($quantity == 0) {
echo "<h2 class='text_shadow'>Out of Stock</h2>";
} else {
$cartId = $row["id"];
echo "<a class='btn' href='cartAction.php?action=addToCart&id=$cartId'>Add to cart</a>";
}
echo "<div class='quickview'>Description</div>";
echo "</div>";
}
}
}
Мой метод получения xpath каждого отдельного div:
public String getProductName(int product) {
String productName = getProduct().getWrappedElement().toString();
String toRemove = productName.substring(0, 78);
String result = productName.replace(toRemove, "").replace("]/h2[text()]", "");
String targetProductName =
result + "[" + product + "]"
+ "/h2[@class=\"header my-3 text-truncate\" and text()]";
System.out.println(targetProductName);
System.out.println(getDriver().findElement(By.xpath(targetProductName)).getAttribute("textContent"));
return getDriver().findElement(By.xpath(targetProductName)).getAttribute("textContent");
}
И сценарий моего корнишона:
Scenario Outline: I should be able to view description of any product
Given I am logged in and on catalog page
When I click on <any> product description button
Then I should be shown the <any> product description
Examples:
|any|
|1 |
|2 |
|3 |
|4 |
|5 |
|6 |
|7 |
|8 |
|9 |
|10 |
|11 |
|12 |