2016-06-09 3 views
-2

Wir haben html tabelle, auf der es javascript onclick funktion.Ich habe problem mit selen klicken methode.C# webdriver selen click funktioniert nicht für html tabelle mit onclick

<table id="somedynamicID" onclick="PerformClick();" class="Level2Item" > 
<tbody> 
    <tr><td ><img src="imagePath" alt=""></td></tr> 
    <tr><td width="100%" nowrap="" id="somedynamicID" >Link Text</td></tr> 
</tbody> 
</table> 

unten ist das Code-Snippet, das ich verwende, um Click durchzuführen.

Table = driver.FindElement(By.ClassName("Level2Item")); 
IWebElement myrow = Table.FirstOrDefault(td => td.Text.Contains("Link Text")); 
myrow.Click(); 

über den Code funktioniert nicht bitte helfen Sie mir.

+0

Es funktioniert nicht wie? Welche Art von Fehlern bekommen Sie? – Mobrockers

+0

erhalten wir Fehler im Ausführungsmodus "System.NullReferenceException: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt." aber im Debug-Modus funktioniert es richtig. – Prakash

Antwort

1

versuchen diese

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(100)); 
var Table = driver.FindElement(By.ClassName("Level2Item")); 
IWebElement myrow = Table.FindElement(By.XPath("//tr/td[contains(text(), 'Link Text')]")); 
myrow.Click(); 
+0

können wir etwas tun wie IWebElement myrow = driver.FindElement (By.XPath ("// Tabelle [enthält (@ Klasse, 'Level2Item')]/tr/td [enthält (Text(), 'Link Text')]")); myrow.Click(); – Prakash

+0

dann muss man wie 'IWebElement myrow = driver.FindElement (By.XPath (" // table [@ class = 'Level2Item']) // tr/td [enthält (text(), 'Link Text')] ")); ' –

+0

Hallo Pranav müssen wir warten, um diesen Code auszuführen, wie es im Debug-Modus funktioniert, aber im Ausführungsmodus Fehler bekommen. – Prakash

0

Ich glaube, Sie so etwas wie dies wollen:

public static bool FindInTableAndClick(IWebDriver driver, string TableID, string StrToFind) 
    { 
     IWebElement tableElement = driver.FindElement(By.XPath("//table[contains(@id, '" + TableID + "')]")); 
     ICollection<IWebElement> trCollection = tableElement.FindElements(By.XPath("id('" + tableElement.GetAttribute("id") + "')/tbody/tr")); 
     ICollection<IWebElement> tdCollection = null; 

     foreach (var tr in trCollection) 
     { 
      if (tdCollection != null) 
      { 
       foreach (var td in tdCollection) 
       { 
        if (td.Text.ToLower().Contains(StrToFind.ToLower())) 
        { 
         td.Click(); 
         return true; 
        } 
       } 
      } 
      i++; 
     } 

     return false; 
    } 
Verwandte Themen