2016-08-02 3 views
0
<div class="col-sm-3"> 
    <span>Annuitant:</span> 
</div> 

<div class="col-sm-3"> 
<span id="annuitant"> 
RPD     
</span> 
</div> 

Xpath Code, den ich vorherich brauche, um zu überprüfen, ob ein Etikett „Rentier“ und seinen Wert „RPD“ vorhanden ist oder nicht geordneten Klasse mit

verwendet
findXpath=page.find('label', text: workbook.cell(j,k), :match => :prefer_exact).path 

    splitXpath=(findXpath.split("/")) #splitting xpath 

##Xpath manipulation to get the xpath of "RPD" 
     count1=splitXpath.count 
     value1=splitXpath.at(count1-3) 
     value=splitXpath.at(count1-2) 
     labelNum=value1.match(/(\d+)/) 
     i=0 
     elementNum=labelNum[1].to_i+1 

     for maxnum in 1..splitXpath.count-4 
     elementXpath=elementXpath + "/" + splitXpath[maxnum] 
     end 

     elementXpath=elementXpath + "/div[" + elementNum.to_s + "]" + "/"+ value 
     elementXpath=elementXpath + "/" + splitXpath.at(count1-1) 
     finalElementXpath=elementXpath.sub("label","span")# obtained the xpath of RPD 
     if (workbook.cell(j+1,k) == (find(:xpath, finalElementXpath).native.text)) # verifying the value RPD is present 

Kann ich übergeordnete Klasse verwenden und überprüfen, ob "Annuitant" ist vorhanden und auch zu prüfen, ob Annuitant-Wert "RPD" ist. Bitte helfen Sie mir einen Code dafür in Ruby Capybara schreiben

+0

Was meinst du mit „Superklasse“ im Beispiel hast du gegeben? –

+0

@Tom Walpole: Ich meinte, kann ich die unmittelbare div class = "col-sm-3" oder eine andere obere div-Klasse (es gibt viele div-Klasse, ich habe nur die unmittelbare div-Klasse im Beispiel erwähnt) zu überprüfen ob ein Rentenempfänger vorhanden ist und den Wert "RPD" hat. – RPD

Antwort

1

Verwenden Sie assert_selector, um zu überprüfen, ob der Selektor den gewünschten Text hat. Siehe unten:

page.assert_selector('#annuitant', :text => 'RPD', :visible => true) 
+0

@ Mesut Güneş: Danke das funktionierte, wenn Sie als '# annuitant' angeben und,: Text als "RPD". Ich muss ungefähr 150 Text und seine Werte in ähnlicher Weise verifizieren. Ich benutze Excel-Blatt, um die Werte Zelle (0,0) = Annuitant, Zelle (1,0) = RPD. Dies ist die Mode, die ich in Excel-Blatt verwendet habe. Gibt es eine Möglichkeit, Werte von Excel zu übernehmen und zu verifizieren? – RPD

+0

@RPD Sie können es in einer Schleife mit der Überprüfung von Text –

+0

@RPD tun, sollten Sie eine andere Frage mit neuem Code und akzeptieren Sie die Antwort, da Ihre ursprüngliche Frage anders war. –

0

können Sie Rahmen Capybara des Finders/Matcher auf jedes Element durch sie entweder auf einem Element Aufruf oder Verwendung innerhalb (Element) ...

In diesem Fall Sie Umfang wollen würde zu Mindestens eine Stufe höher in Ihrem HTML-Dokument, so dass beide Elemente, die Sie interessieren, in dem Element enthalten sind, das Sie ebenfalls definieren. Auch die Klasse 'col-sm-3' wäre eine schlechte Wahl, da sie für diese Elemente nicht einzigartig ist. Eine andere Sache, auf die es ankommt, ist, wie streng Ihre Prüfung sein muss, müssen Sie tatsächlich die Struktur der Elemente überprüfen oder müssen Sie nur überprüfen, der Text erscheint nebeneinander auf der Seite. Wenn letzteres so etwas wie

element = find('<selector for parent/grandparent of both elements>') # could also just be `page` if the text is unique 
expect(element).to have_text('Annuitant: RPD') 

, wenn Sie tatsächlich die Struktur Dinge zu überprüfen, brauchen komplizierter und müssten Sie XPath verwenden

expect(element).to have_selector(:xpath, './/div[./span[text()="Annuitant:"]]/following-sibling::div[1][./span[normalize-space(text())="RPD"]]') 
+0

@ Tom Walpole: Ich muss die Struktur auch überprüfen. Also früher xpath benutzt. Aber es hat länger gedauert, den XPath zu identifizieren und zu manipulieren. Ich muss auf diese Weise rund 400 Werte und Texte verifizieren. Ich habe meine Frage oben mit dem Code bearbeitet, den ich für xpath verwendet habe. – RPD

+0

@RPD dieser Code stimmt nicht mit dem HTML überein, das Sie dort haben - (keine Label-Elemente) und es ist nicht sehr klar, was Sie zu tun versuchen. Wie ich denke, von Bits des Codes und Ihrer HTML-Datei nehmen Sie etwas wie - 'if page.has_selector? (: Xpath," .//div[./span[text()=\"#{workbook.cell(j , k)}: \ "]]/Folge-Geschwister :: div [1] [./ span [Normalize-Leerzeichen (text()) = \" # {workbook.cell (j + 1, k)} \ " ]] ") #dann etwas tun - Wenn Sie das nicht versuchen, sollten Sie eine neue Frage erstellen, in der Sie das zu lösende Problem vollständig beschreiben und echte vollständige Daten/HTML bereitstellen –

Verwandte Themen