2016-11-30 2 views
0

Я сейчас в ситуации, когда мне нужно выбрать родителя из дочернего элемента. У ребенка есть идентификатор, но у родителя нет. Так что это на самом деле одно из немногих решений.appium - выбор родительского узла

WebElement child = driver.findElement(By.id("books")); 
System.out.println(child.getAttribute("name")); //prints correct node 
WebElement parent = child.findElement(By.xpath("..")); 
System.out.println(parent.getAttribute("name")); // error can't find element 
+0

Инструкция xpath должна позволить вам выбрать элемент с дочерним элементом с заданным критерием (в вашем случае id). – Rob

+0

Любая идея, почему это не сработает? – John

+0

попробуйте что-нибудь вроде"// * [@ id = "books"]/.. "в вашем первом поиске, который говорит найти любой элемент с id =" books ", а затем перейти к его родительскому объекту. – Rob

ответ

0

Для того, чтобы найти элемент на основе другого элемента вам необходимо использовать . в начале XPath для выбора текущего узла. Это должно работать для вас:

WebElement parent = child.findElement(By.xpath("./..")); 
+0

Уже пробовал, но получил тот же результат. Это приложение для гибридов, может быть, это является причиной того, что он действительно не работает, поскольку он должен работать? – John

+0

Не уверен. Не должно быть причины. – Ievgen

0

В Appium, чтобы выбрать ближайший родительский узел, необходимо предоставить/..

Э.Г. childElement Xpath = //android.widget[@text='name ']

Родитель Xpath выражение: mobiledriver.FindElement (By.xpath ("// android.widget [@ текст = 'имя'] /. . »). нажмите

Смежные вопросы