2016-03-15 40 views

Odpowiedz

8

podwójny ukośnik // oznacza każdą potomka węzła bieżącego węzła w drzewie html który Feets lokalizatora.

Pojedyncza kreska / oznacza węzeł będący bezpośrednim potomkiem bieżącego.

//div[@id='add']//span[@id=addone'] będzie mach

<div id="add"> 
    <div> 
    <span id="addone"> 
    </div> 
</div> 

I

<div id="add"> 
    <span id="addone"> 
</div> 

//div[@id='add']/span[@id=addone'] będą macha tylko drugie drzewo html.

2

Jeśli masz to.

<div id='add'> 
    <ul> 
     <li> 
     <span id='add one' /> 
     </li> 
    </ul> 
</div> 

Następnie //div[@id='add']//span[@id='addone'] spowoduje rozpiętości ponieważ drugi // oznacza spojrzeć na każde dziecko w stosunku do div[@id='add'] że jest span[@id='add one'].

Jeśli użyjesz jednego ukośnika //div[@id='add']/span[@id='addone'] to oczywiście go nie znajdziesz, ponieważ wtedy szukasz bezpośredniego dziecka i będziesz musiał użyć //div[@id='add']/ul/li/span[@id='addone']. Drugi // jest bardzo przydatny w unikaniu dodatkowej hierarchii w twoich ścieżkach x.

+0

Mam jeszcze jedno pytanie. Na stronie znajduje się przycisk "szukaj". Jeśli go kliknę, wyświetli wszystkie wyniki. Warunek jest taki, że jeśli dane są obecne, to wyświetli dane w wierszu, ale jeśli dane nie są obecne, wyświetli tekst "Brak elementu" na stronie. Czy możesz mi powiedzieć, jak poradzić sobie z tą sytuacją?\t Mam spróbować, jeśli -else warunku, ale jest pokazujący wyjątek element nie znaleziono. Proszę mi pomóc, jak sprawdzę dane stanu nie znalezione dla konkretnego elementu. –

+1

Nie ma za co. Proszę [zaakceptuj] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) tę odpowiedź, jeśli jest pomocna, i zadaj nowe pytanie dotyczące zapytania dotyczącego nowego przycisku wyszukiwania. –

+0

Używam następującej logiki: If (! = (Webelement.xpath (""). IsDisplayed) element found else ((webelement.xpath (""). IsDisplayed) element nie został znaleziony Tutaj użyłem, jeśli jeszcze pętla sprawdzi który element jest obecny, ale jeśli element nie jest obecny w pierwszej, jeśli jest, to wyświetlił "błąd nie znalezionego elementu", proszę zasugeruj na nim: –

8

Podwójna kreska (//) jest osią potomną lub własną; jest to skrót od /descendant-or-self::node()/. pojawia

//div[@id='add']//span[@id='addone'] 
  • Przy pierwszym //, to wybiera wszystkie div elementy w dokumencie z wartością atrybutu id równej 'add':

    W przykładzie XPath.

  • Po raz drugi pojawia się //, wybiera wszystkie elementy span, które są potomkami każdego z wcześniej wybranych elementów .
  • Należy pamiętać, że dwukrotne użycie dwóch podwójnych ukośników jest inne niż jednorazowe użycie podwójnego ukośnika . Na przykład, //span[@id='addone'] wybierze wszystkiespan elementy z @id='addone' w całym dokumencie, niezależnie od tego, czy są one potomek div z @id='add'.
+0

Mam jeszcze jedno pytanie Na stronie znajduje się przycisk "szukaj", jeśli go kliknę, wyświetli wszystkie wyniki. Teraz warunek jest taki, że jeśli dane są obecne, to wyświetli dane w wierszu, ale jeśli dane nie są obecne, na stronie pojawi się tekst "Brak elementu" na stronie. obsłużyć tę sytuację –

+0

Mam tr y z warunkiem -else, ale pokazuje wyjątek nie znaleziony elementu. Proszę mi pomóc, jak sprawdzę dane stanu nie znalezione dla konkretnego elementu. –

+1

Nie ma za co. Proszę [** accept **] (http://meta.stackoverflow.com/q/5234/234215) tę odpowiedź, jeśli jest to pomocne, i zadaj nowe pytanie dotyczące zapytania dotyczącego nowego przycisku wyszukiwania. Pamiętaj, aby dołączyć [mcve] demonstrujące, w jaki sposób XPath nie wybiera tego, co chcesz. Dzięki. – kjhughes