2017-06-15 67 views
0

嗨我在編寫自動化測試時點擊某些元素時遇到問題。令人沮喪的是,當我單步執行代碼時似乎工作正常,但當我在調試中讓它通過時,卻沒有發生。我對硒很新,所以歡迎任何建議。C#Selenium Webdriver單擊表格單元格時出錯

這是我正在查看的網格/表格。 Grid

這是表格體的HTML。

<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>

麻煩的是,開發人員補充說,招式基於你在將鼠標哪個小區的每個單元的編輯圖標。所以元素不總是存在&無論我嘗試它似乎並不工作。

這是我的方法。

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); 
    } 

有什麼想法嗎? 這是一個錯誤

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

任何人?真的很感謝這個 – RachS

+0

的任何幫助錯誤信息告訴你什麼是錯的。有一個'

'這阻止了webdriver點擊目標元素。找到覆蓋層並確保它被關閉/解散。 – orde

回答

0

例外說,還有另外一個元素(在上面?),將接收click事件。而不是使用Selenium .Click(),使用JavaScript .click():

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click()", element); 
相關問題