我们有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();
以上代码无效请帮助我。
答案 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;
}