Здравствуйте!
Selenium Java.
Мне нужно найти элемент, содержащий определённый текст в конкретной области страницы (так как за её границами есть другие, не нужные мне элементы с таким же текстом). Область содержит сложную динамическую структуру, так что предсказать точное положение элемента в будущем я не могу, другие атрибуты элемента не уникальны.
Я определил эту область как reservationList и теперь пытаюсь найти в ней текст 'Empty Table:
targetTable = assignTableList.findElement(By.xpath("//*[contains(text(), 'Empty Table')]")) - ищет по всей странице и находит не то;
("/*[contains(text(), 'Empty Table')]") ("*[contains(text(), 'Empty Table')]") или ("[contains(text(), 'Empty Table')]") - ничего не находят.
видимо, я что-то не понимаю о том, как в xPath использовать "*".
Другой элемент в этой области мне удаётся найти так:
WebElement reservation = reservationList.findElement(By.cssSelector("#"+reservationId));
но у него есть уникальный iD, а у нужного мне сейчас - нет: только текст.
css-селекторами вроде нельзя искать текст или я не понял - как.
По абсолютному полному пути он находится и
driver.findElement(By.xpath("/html/body/div[5]/div/div/div[1]/div[3]/div[3]/div/div[1]/div[2]/mrb-res[1]/div[2]/div[2]/div[1]/div/div[1]/div")).click();
отрабатывает;
то есть дело точно не в ожиданиях: элемент уже на странице, виден, с ним можно взаимодействовать и его ничего не перекрывает.
Но полный путь мне не подходит, так как через пару часов он может стать другим.
Подскажите, пожалуйста, как искать текст в определённой области DOM а не по всей странице?