2016-09-06 10 views
0

Ich verwende Selenium WebDriver für Visual Studio 2015. Ich hatte ein fortlaufendes Problem mit einem Radioknopf, der ursprünglich funktionierte, und hört dann auf zu arbeiten, und nimmt dann wieder Arbeit auf. Ich habe versucht, jeden Grund für die Ursache einzugrenzen, aber ich kann das Problem nicht isolieren.Das Web-Element funktioniert nach dem Zufallsprinzip nicht mehr

  1. Ich habe versucht, dies sowohl auf IE 10/11 und Chrome und weder die WebElement nicht mehr sehen.

  2. Ich habe eine Wait-Funktion hinzugefügt, um zu sehen, um zu versuchen, wenn das Element sichtbar ist (sogar versucht, einen Schlaf für alle Fälle)

  3. Da es ein Click() Methode habe ich versucht haben sowohl den Klick und die Tastaturbefehle. geben Sie

  4. Mehrere Pfade, mit Namen, css, ID, XPath aber die webelement bei allen unter meinem Code

hat sich nicht geändert Bitte sehen: -

test.Log(LogStatus.Info, "Blah", "Before"); 
try 
{ 
    radBtnCID=wait.Until(ExpectedConditions.ElementIsVisible(By.Id("someID"))); 
    if (radBtnCID == null) 
    { 
     test.Log(LogStatus.Error, method, "Web Element Returned Null: radBtnCID"); 
    } 
    else 
    { 
     radBtnCID.SendKeys(Keys.Enter); 
     test.Log(LogStatus.Info, radBtnCID.Text, radBtnCID.Text); 
    } 
} 
catch (Exception ex) 
{ 
    test.Log(LogStatus.Error, method, ex.Message); 
} 
test.Log(LogStatus.Info, "Blah", "After"); 

Wenn ich debuggen den Code nach der Wartefunktion auf die else-Anweisung bewegt er sich auf so dass sie nicht den WebElement als null sehen, ich habe buchstäblich sah es die Codezeile auszuführen, aber es nie das gewünschten Optionsfeld auswählt . Es löst keine Ausnahme und ich sehe erfolgreich meine Vorher-Nachher-Nachrichten. Bitte helfen Sie mir dabei, und ich habe keine Ideen mehr.

+0

und was ist das Problem mit diesem 'radBtnCID .Klicken() '?? –

+0

Selbe wie mit dem radBtnCID.SendKeys (Keys.Enter) es sieht direkt auf den Code und wählte nie das gewünschte Optionsfeld –

+0

Versuchen Sie einmal mit 'IJavascriptExecutor' als ==> 'IJavascriptExecutor js = Treiber als IJavascriptExecutor; js.ExecuteScript ("Argumente [0] .click()", radBtnCID); 'und lassen Sie mich wissen .. :) –

Antwort

1

Es scheint Problem auf Ihrer Seite entwirft, ist, warum Sie nicht in der Lage sind IWebElement.Click() hier durchführen, können Sie auch versuchen, als eine alternative Lösung IJavaScriptExecutor wie unter Verwendung von: -

IJavaScriptExecutor js = driver as IJavaScriptExecutor; 
js.ExecuteScript("arguments[0].click()",radBtnCID); 
+1

Die JavaScript-Injektion 'HTMLElement.click()' sollte nicht in einem Testkontext verwendet werden. Es vereitelt den Zweck des Tests. Erstens, weil es nicht alle Ereignisse wie ein echter Klick erzeugt (Fokus, Unschärfe, Mouse-Down, Mouse-Up ...) und zweitens, weil es nicht garantiert, dass ein echter Benutzer mit dem Element interagieren kann. –

+0

@FlorentB. Ja, du hast absolut recht, deshalb habe ich erwähnt, dass es als alternative Lösung genutzt werden kann. Danke, darauf hinweisen .. :) –

+0

@FlorentB. Guter Punkt. Haben Sie jedoch eine mögliche Lösung? – Thibstars

Verwandte Themen