2016-04-19 9 views
0

Ich versuche, Login auf DropBox https://www.dropbox.com/chooser zu automatisieren, aber immer noch Probleme mit Element nicht sichtbar, was seltsam ist, obwohl wenn alle Seite erfolgreich geladen wird. HierElement nicht sichtbar Target Aufruf Ausnahme

ist der Code für das Füllen Sie das Kennwort:

protected virtual void FillPassword(string password) 
    { 
     //Password.Clear(); 
     Password.SendKeys(password); 
    } 

Die letzte Zeile auf der Ziel Invocation Ausnahme fehlschlägt. Ich wollte auch Password.Clear(); verwenden, aber das war auch fehlgeschlagen. Hier

ist der Locator für Passwort:

[CacheLookup, FindsBy(How = How.Name, Using = "login_password")] 
protected override IWebElement Password { get; set; } 

Was ist los? Ich habe versucht, Warte-Methoden für die Seite zu verwenden, aber es hat nicht geholfen. Weiß jemand, warum es abstürzt?

+0

Können Sie bestätigen, ob die * Feld Kennwort * sichtbar ist, wenn Sie die * Tastaturbefehle tun() * – bit

+0

Ich schlage vor, wenn die Seite angezeigt wird und einige Zeit damit verbringt, Es ist offensichtlich, dass die Seite vollständig geladen ist. Zumindest habe ich mich jemals auf diese Regel verlassen. Es ist wahr, dass wenn ich WebDriverWait verwendet habe, es mit Timeout endete, dieses Element wurde nicht gefunden. Das verwirrte mich, weil die webdriver.page-Quelle es anzeigt ... – Michal

Antwort

1

änderte ich den HTML-Locator:

[CacheLookup, FindsBy(How = How.CssSelector, Using = ".text-input-wrapper [name=\"login_password\"]")] 
protected override IWebElement Password { get; set; } 

und das funktioniert gut. Ich bin nicht sicher, warum der Namenswähler es nicht finden kann. Das ist ein Missverständnis für mich. Beide Ansätze sollten funktionieren. Hier ist die Seite Quelle des Feldelement:

<div class="text-input-wrapper"> 
<input id="pyxl14559" class="password-input text-input-input" type="password" name="login_password"> 
<label for="pyxl14559" style="">Password</label> 
<small class="secondary-label"></small> 
<div class="password-caps-indicator">Caps lock is currently on</div> 
</div> 
+0

manchmal sind sogar locators korrekt, aber scheitert, wir müssen wählen, was perfekt auf Ausführungen funktioniert .. :) –