2016-08-02 12 views
1

Ich benutze einen Winkelmesser, um zu testen, und versuche auf ein Element im HTML mit einem Titel-Tag zuzugreifen. Das Problem ist, wenn ich versuche, an das Element mit dem Titel-Tag (ich brauche ein weiteres down-Element, um die innereHTML zu testen), bekomme ich die "Kein Element gefunden mit Locator: By (CSS-Selektor) Fehler.by.css() findet Element, aber wenn irgendetwas angehängt wird, wird kein Element gefunden, das den Locatorfehler verwendet.

Dieser Code übergibt:

browser.element.all(by.css('div[data-row="1"]')).get(0).element(by.css('div[class="widget-body"]')). 
element(by.css('section[class="scrollable"]')).element(by.css('div[title="myTitle: myTitle"]')); 

Aber dieser Code nicht:

browser.element.all(by.css('div[data-row="1"]')).get(0).element(by.css('div[class="widget-body"]')). 
element(by.css('section[class="scrollable"]')).element(by.css('div[title="myTitle: myTitle"]')). 
element(by.css('span[class="text-I-Want ng-binding"]')).getInnerHtml(); 

HTML-Element:

<div title="myTitle: myTitle"> 
    <header><b class="ng-binding">myTitle</b></header> 
     <section> 
      <h3><span class="text-on-hand ng-binding">myTitle</span> 
     </section> 
</div> 

Die Elemente datenzeile/widget-body/scrollbare Elemente sind übergeordnete Elemente des Elements, zu dem ich gelangen soll. Ich kann online keine Ressourcen finden, die mir gesagt haben, warum das passiert. Kann mir jemand helfen?

+0

Kann den Screenshot der Seite anhängen? –

Antwort

1

Der Grund für den ersten Codeblock ist, dass Progractor überhaupt nicht versuchen würde, Elemente in diesem Fall zu finden. Nur wenn Sie eine Aktion für ein Element ausführen oder nach einer bestimmten Eigenschaft oder einem bestimmten Attribut fragen, würden Sie den Winkelmesser auslösen, um zu versuchen, das Element zu finden.

Mit anderen Worten, das Problem liegt in der Art, wie Sie das Element finden.

Die Kette von Locators, die Sie erstellt haben, sieht nicht zuverlässig aus und Sie sollten debuggen, welcher Abschnitt der Kette einen Fehler verursacht. Put a browser.pause() or browser.debugger() und versuchen Sie Ihre CSS-Selektoren in der Shell.

Es ist schwierig, mehr zu sagen, da es für uns keine Möglichkeit gibt, Ihr Problem zu reproduzieren.

+1

Ich werde deine als korrekt markieren. Es gab zu viele Faktoren, um mich damit auseinanderzusetzen, wie ich das Problem behoben habe, aber im Grunde war der Titel in einem Dropdown-Feld versteckt, das sich öffnet, wenn ein "+" - Zeichen angeklickt wird. Auf einer anderen Seite musste ich den click() nicht codieren, um den Test zu bestehen. Auf dieser Seite musste ich das + drücken, um das Menü zu löschen, und dann konnte ich das Element tatsächlich finden. Long Story kurz, Winkelmesser Tests ist nicht nur eine Kopie und einfügen, wenn eine Sache auf einer Seite funktioniert, auch wenn sie fast identisch sind. Es ist sehr wahrscheinlich, dass es für eine separate Seite nicht funktioniert. – Jooba0352

+0

Ohne Ihre Hilfe hätte ich nicht durch die Winkelmesser-API gesucht, um herauszufinden, wo ich möglicherweise falsch gelaufen bin. – Jooba0352

Verwandte Themen