2016-11-16 2 views
0

Ich versuche auf einen Container zuzugreifen, der mehrere Elemente mit IDs in sich hat, aber ich kann es nicht so funktionieren lassen, wie ich es für Android mache.Xpath mit Appium iOS für Container mit mehreren Elementen

Dies ist, was ich bisher:

try { 
     WebDriverWait wait = new WebDriverWait(driver, 3); 
     wait.until(ExpectedConditions.visibilityOfElementLocated(
       By.xpath("//UIACollectionCell[UIAStaticText[contains(@name, 'section')] and UIAStaticText[contains(@name, 'title')]]") 
     )); 
     System.out.println("xpath w/ ids found"); 
    } catch (Exception e){ 
     System.out.println("xpath w/ ids not found"); 
    } 

Aber es funktioniert gut, wenn ich nur einen Text haben darin

try { 
     WebDriverWait wait = new WebDriverWait(driver, 3); 
     wait.until(ExpectedConditions.visibilityOfElementLocated(
       By.xpath("//UIACollectionCell/UIAStaticText[contains(@name, 'section')]") 
     )); 
     System.out.println("xpath w/ ids found"); 
    } catch (Exception e){ 
     System.out.println("xpath w/ ids not found"); 
    } 

Es dass die [] mit scheint auf meinem Behälter macht es aus irgendeinem Grund nicht verständlich ...

Irgendeine Idee?

Vielen Dank!

+1

Könnten Sie bitte auch die XML-Seite angeben, um die XPath-Übereinstimmung zu überprüfen? –

+0

Die XML-Elemente sind korrekt, da sie für ein Element arbeiten. Das Problem tritt nur auf, wenn Sie eine CollectionCell mit mehreren Text darin benötigen. – user3718160

+0

Ich kann Ihre Locators nicht verstehen, wenn ich keinen XML-Kontext habe. –

Antwort

0

nur versuchen, wie folgt aus:

By.xpath("//UIACollectionCell[UIAStaticText[contains(@name, 'section') and contains(@name, 'title')]]"); 

hoffe, das hilft und lassen Sie mich wissen, was passiert.

+0

Ich will kein 'Oder', sondern eine 'Und' Aussage. Ich möchte, dass es 2 statisticText 1 enthält, die 'section' enthält, und 1, die 'title' – user3718160

+0

enthält, also benutze statt und – noor

+0

dies würde nicht funktionieren, da du nach einem UIAStaticText suchen würdest, der sowohl 'section' als auch 'title' enthält was nicht möglich ist. es ist eine UIACollectionCell, die 2 UIAStaticText 1 mit 'section' UND 1 mit 'title' enthält. – user3718160

0

Es funktioniert nicht, weil Sie den Fahrer bitten, auf ein einzelnes Element zu warten. Wenn Sie auf mehrere warten möchten, müssen Sie die Funktion ExpectedConditions.visibilityOfAllElementsLocatedBy(By) verwenden.

+0

Es sollte funktionieren. Es sollte 1 Element UIACollectionCell geben (das die 2 UIAStaticText enthält), aber es ist immer noch 1 Element – user3718160

+0

'By.xpath (" // UIACollectionCell [UIAStaticText [enthält (@name, 'section')] und UIAStaticText [enthält (@name, 'title')]] ")' gibt 'UIACollectionCell' zurück, das 1 oder mehr 'UIAStaticText [contains (@name,' title ') enthält und (@name,' section ')] ' –

+0

' By.xpath ("//UIACollectionCell/UIAStaticText [contains (@name, 'section')] ")' gibt alle 'UIAStaticText' zurück, die das Attribut' name' haben, das 'section' enthält. –

Verwandte Themen