Frage

Ich versuche, einen Link in einer Tabellenzeile zu treffen, die mehrere Links enthält. Dieses Muster wird in der gesamten Tabelle.

Das funktioniert:

browser.wait_for(:element => "css=tr:nth-child(1) li:nth-child(2) > a")

Dies gilt nicht:

browser.click "css=tr:nth-child(1) li:nth-child(2) > a"

Irgendwelche Ideen, warum dies sein könnte? Ich bin mit dem Selen-Client rubygem.

War es hilfreich?

Lösung

Ich vermute, dass dies einen Fehler in cssQuery zurückzuführen, die Selen zur Zeit benutzt Elemente von CSS zu suchen. Einzelheiten der Ausgabe und ein Patch können in den Kommentaren der folgenden Frage zu finden: http: // jira.openqa.org/browse/SEL-698

Ich hoffe, das hilft - ich glaube 2 Selen wird eine andere Bibliothek für CSS Locators verwenden - möglicherweise jQuerys Sizzle ( http: // sizzlejs.com/ ), die dieses Problem lösen soll.

Dave.

Andere Tipps

Um schmerzhafte CSS Fragen wie diese zu vermeiden, habe ich jQuery als Benutzer-Erweiterung installiert. Es gibt die Möglichkeit, einen Lokator String ähnlich wie CSS zu definieren ( "jquery = td.dt-col-Status div.dt-Liner: enthält ( 'Complete')"), das ist viel mächtiger. Ich kann auf erweitern, wie ich es für den Java-RC tat, wenn Sie möchten.

Das ist ein Fehler in Selen 1 Ich würde versuchen, den gesamten Pfad in Ihrem CSS-Pfad zu schreiben und sehen, ob das hilft.

ex wenn Sie die folgende HTML verwenden, können Sie den folgenden CSS-Locator
verwenden     

    <table>
        <tr>
            <td>
                <li>
                    <a href="/yourlink" >
</li> </td> </tr> </table>

"css=tr:nth-child(1) > td > li:nth-child(2) > a"

Wenn das nicht funktioniert Sie immer XPath verwenden kann. Es ist genauso ausdrucksstark wie CSS Locators aber neigt dazu, weniger Störungen zu haben. Das einzige, was Sie im Auge zu behalten, wenn XPaths ist, dass sie in der Regel langsamer als CSS Locators.

"xpath=//tr/td//li[2]/a" 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top