Вы не можете извлечь локатор из существующего элемента.
В вашем примере вы передали String
, представляющий локатор, и получили количество найденных элементов. Я бы посоветовал вам немного изменить это, чтобы вместо него взять By
.
Если вы берете String
, метод будет привязан к определенному типу локатора, т.е. в вашем случае XPath. Если вы берете локатор By
, у вас может быть один метод, который принимает любой тип локатора.
Я бы предложил вам изменить ваш метод на
public int elementCount(By locator) {
return driver.findElements(locator).size();
}
Если все, что вы хотите проверить, это наличие элемента (например, count> 0, как в вашем тестовом примере), то вы можете изменить вышеуказанную функцию на
public bool elementExists(By locator) {
return driver.findElements(locator).size() > 0;
}
Использование этого параметра изменит ваш тестовый набор на
@Test
public void elementCount() {
navigate("https://www.msn.com");
elementExists(By.tagName("a")) ? foo() : bar();
}