一尘不染

selenium点击表td内的anchor标签

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>

我如何单击Baked beans表/ tr / td / a中的文本

我尝试下面的代码,

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

阅读 226

收藏
2020-06-26

共1个答案

一尘不染

您的代码中有小错误,在文本中缺少’‘ "+linktext+"

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

NoSuchElementException通常表示元素处于中frame,或加载缓慢。硒仅与当前框架中的元素相互作用。在frame您切换到子元素之前,子元素中的任何元素都无法与之交互frame。您可以使用switchTo().frame()以下命令进行切换:

driver.switchTo().frame(ARG);

的参数frame()

  • 从0开始
  • ID frame
  • webelement参考frame

在中完成后iframe,请使用以下命令退出文档顶部:

driver.switchTo().defaultContent();
2020-06-26