2017-06-15 31 views
0

Hallo Ich habe Probleme beim Klicken auf einige Elemente, wenn ich meine Automatisierungstests schreibe. Frustrierend, wie es scheint, wenn ich durch den Code gehe, aber nicht, wenn ich es gerade im Debugging durchlaufen lasse. Ich bin Selen relativ neu, so dass jeder Rat willkommen ist.C# Selenium Webdriver Fehler beim Klicken auf eine Tabellenzelle

Dies ist das Raster/Tabelle, die ich betrachte. Grid

Und das ist der HTML-Code für den Tabellenkörper.

<tbody> 
 
    <tr data-id="471892"> 
 
    <td class="checkbox"><span class="checkbox" data-id="471892"></span></td> 
 
    <td class="left" data-edit="false"><a href="/Contacts/Contact/471892">Contact1, Test</a></td> 
 
    <td class="left" data-edit="false"><a href="/Contacts/Account/258144">Dan Test 1</a></td> 
 
    <td class="left" data-edit="true" data-editid="280122">Automation Tester</td> 
 
    <td class="left" data-edit="true"></td> 
 
    <td class="left" data-edit="true">1234567890</td> 
 
    <td class="left" data-edit="true">07123456789</td> 
 
    <td class="left" data-edit="true" data-fieldid="324" data-dataid="64345" data-filtertype="10">Sherratt, Rachel 
 
     <a class="icon edit" id="grid-edit" style="display: none;"></a> 
 
    </td> 
 
    </tr> 
 
</tbody>

Das Problem ist, haben die Entwickler ein Bearbeitungssymbol für jede Zelle hinzugefügt, die auf Basis bewegt, welche Zelle Sie die Maus über schweben. Also das Element ist nicht immer vorhanden & egal was ich versuche es scheint nicht zu funktionieren.

Dies ist die Methode, die ich habe.

public void gridEditText(IJavaScriptExecutor jse, string text, int cell) { 
     WebDriverWait wait = new WebDriverWait(Browser.getDriver, new TimeSpan(0, 0, 15)); 
     IWebElement clickableElement = wait.Until(Browser.ElementIsClickable(By.XPath("//*[@id='grid-main']/tbody/tr[1]/td[" + cell + "]"))); 
     jse.ExecuteScript("arguments[0].scrollIntoView()", clickableElement); 
     clickableElement.Click(); 
     //Grid Edit only appears when the mouse hovers over the cell 
     IWebElement elem = wait.Until(Browser.ElementIsClickable(By.XPath("//*[@id='grid-main']/tbody/tr[1]/td[" + cell + "]/a[@id='grid-edit']"))); 
     String js = "arguments[0].style.display='inline';"; 
     jse.ExecuteScript(js, elem); 
     elem.Click(); 

     IWebElement gridEditText = wait.Until(Browser.ElementIsClickable(By.XPath("//*[@id='grid-main']/tbody/tr[1]/td[" + cell + "]/input[@id='grid-edit-text']"))); 
     gridEditText.Clear(); 

     IWebElement gridEditText2 = wait.Until(Browser.ElementIsClickable(By.XPath("//*[@id='grid-main']/tbody/tr[1]/td[" + cell + "]/input[@id='grid-edit-text']"))); 
     gridEditText2.SendKeys(text); 
    } 

Irgendwelche Ideen bitte? Dies ist ein Fehler

An exception of type 'System.InvalidOperationException' occurred in WebDriver.dll but was not handled in user code 

    Additional information: unknown error: Element <a class="icon edit" id="grid-edit" style="display: inline;"></a> is not clickable at point (1096, 296). Other element would receive the click:" <div class="overlay"></div> 
+0

Jeder? Würde wirklich jede Hilfe zu dieser – RachS

+0

schätzen Die Fehlermeldung sagt Ihnen, was los ist. Es gibt eine '

', die verhindert, dass der Webtreiber auf das Zielelement klickt. Finde dieses Overlay und vergewissere dich, dass es geschlossen ist. – orde

Antwort

0

Die Ausnahme sagt, dass es ein weiteres Element ist (oben?), Dass das Click-Ereignis erhalten würde. Anstatt ein Selenium zu verwenden. Klicken Sie auf(), verwenden Sie ein JavaScript. Klicken Sie auf():

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click()", element); 
Verwandte Themen