Próbuję znaleźć element po jego pełnej ścieżce (wholeElement) i najpierw znajdując element wyższego poziomu, a następnie znajdując element niższego poziomu w tym elemencie (modularElement). Tu jest mój kodu:Appium findElement użyte dwa razy w jednym wierszu nie działa
WebElement modularElement = appDriver.findElement(By.xpath("//UIATableCell[2]")).findElement(By.xpath("//UIAStaticText[4]"));
WebElement wholeElement = appDriver.findElement(By.xpath("//UIATableCell[2]/UIAStaticText[4]"));
Logger.LogMessage("modularElement attribute1: " + modularElement.getLocation(), Priority.High);
Logger.LogMessage("wholeElement attribute1: " + wholeElement.getLocation(), Priority.High);
Naprawdę dziwny problem mam przeżywa to dwa elementy (modułowe i ca) są różne elementy i nie ten sam (pokazane w różnych miejscach drukowanych w kodzie powyżej). Czy ktoś może wyjaśnić, dlaczego tak się dzieje?
Dzięki.
UPDATE:
Próbowałem również używając .// ale dostarcza ten sam problem nadal:
WebElement modularElement = appDriver.findElement(By.xpath("//UIATableCell[2]")).findElement(By.xpath(".//UIAStaticText[4]"));
Czy jesteś pewien, że pierwsza linia kodu znajdzie '' tylko UIAStaticText' pod UIATableCell [2] ', a nie nigdzie indziej w dokumencie? Po prostu pytam, ponieważ XPath zaczynający się od '//' normalnie wybiera ze wszystkich potomków * węzła głównego dokumentu *. (Zgadzam się jednak z twoim ogólnym stwierdzeniem na temat różnicy między '/' i '//'). – LarsH
@LarsH to świetny punkt! Tęskniłem za tym. Edytowane. Wielkie dzięki! – alecxe
Dzięki za komentarze. Obawa przy użyciu ./UIAStaticText[4] powoduje błąd "element nie może być zlokalizowany". Skopiowano i wklejono 2 wiersze kodu powyżej i znaleziono cały wynik, ale moduł nie jest. –