selenium点击表td内的锚标签

时间:2014-06-10 15:47:00

标签: selenium

我的html代码如下所示:

<div id="food-search-all" class="fd_food_search_all fd_loading" style="display: block;">
     <ul class="fd-breadcrumbs" > 

        <li>
            <a href="Javascript://" class="breadcrumb">Baked beans</a>
        </li>
   </ul>

     <div class="fd-search-results"><table class="results ib-list" cellpadding="0" cellspacing="0" border="0"> 
        <tbody>           
            <tr class="foods foods_s-fndds244535"> 
                <td class="name"> 
                    <a href="Javascript://">Baked beans</a>
                </td>
                <td class="default-amount"> </td> 
            </tr>

            <tr class="foods foods_s-fndds244535"> 
                <td class="name"> 
                    <a href="Javascript://">Chickens</a>
                </td>
                <td class="default-amount"> </td> 
            </tr>
            <tr class="foods foods_s-fndds244535"> 
                <td class="name"> 
                    <a href="Javascript://">Cow milk</a>
                </td>
                <td class="default-amount"> </td> 
            </tr>
        </tbody>
    </table></div> 
</div>

如何点击驻留在table / tr / td / a中的文本Baked beans

我试过以下代码,

driver.findElement(By.xpath("/table[contains(@class,'results ib-list')]/tbody/tr/td[@class = 'name']/a[contains(text(),"+linktext+")]")).click();

但显示异常:

 org.openqa.selenium.InvalidSelectorException: The given selector  

2 个答案:

答案 0 :(得分:0)

您的代码中出现小错误,您在文本"+linktext+"周围错过了“

driver.findElement(By.xpath("/table[contains(@class,'results ib-list')]/tbody/tr/td[@class = 'name']/a[contains(text(),'"+linktext+"')]")).click();

NoSuchElementException通常表示该元素位于frame中,或者加载速度较慢。 Selenium仅与当前帧中的元素交互。在您切换到frame之前,无法与子frame内的任何元素进行互动。您可以使用switchTo().frame()

进行切换
driver.switchTo().frame(ARG);

frame()的论据是

  • 从0开始的数字
  • frame
  • 的ID
  • webelement
  • frame重新引用

iframe完成后,使用以下内容退回到文档顶部:

driver.switchTo().defaultContent();

答案 1 :(得分:0)

由于您在标记下有链接,因此selenium必须使用以下代码。 你的xpath将是.//*[@id='food-search-all']/ul/li(假设div id是唯一的。你可以使用firebug帮助生成xpath)

IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal)); 
string CellVal = TargetElement.Text.ToString(); 
TargetElement = driver.FindElement(By.LinkText(CellVal));
TargetElement.Click();

有时sigle使用.Click()不起作用我会建议再添加一个TargetElement.Click();如果你的第一次尝试不起作用。