c#webdriver selenium点击不适用于带onclick的html表

时间:2016-06-09 12:42:26

标签: c# selenium selenium-webdriver

我们有html表,它有javascript onclick功能。我遇到了selenium点击方法的问题。

<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>
下面的

是我用来执行Click的代码段。

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

以上代码无效请帮助我。

2 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:0)

我想你想要这样的东西:

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