Для этого вам потребуется использовать вложенный селектор XPath.
//*[contains(text(), 'next') and a[contains(text(), 'part')]]
Это запросит любой элемент, содержащий текст next
, а затем проверит, что этот элемент содержит вложенный элемент a
. с текстом part
.
Чтобы определить, действительно ли существует вложенный тег a
, вам нужно написать метод для этого, который проверяет два разных XPath. Нет простого способа обойти это, кроме как оценить элементы и посмотреть, что там есть.
public bool DoesElementHaveNestedTag()
{
// check for presence of locator with nested tag
// if driver.findElements returns > 0, then nested tag locator exists
if (driver.findElements(By.XPath("//*[contains(text(), 'next') and a[contains(text(), 'part')]]")).Count > 0) return true
else return false
}
Вы можете изменить этот метод в соответствии со своими потребностями, но идея та же. Невозможно узнать, имеет ли WebElement вложенный тег или нет, если только вы не попытаетесь найти WebElement с использованием двух XPath: один проверяет наличие тега, а другой - нет.