2014-03-04 46 views
0

你好,我是新的硒IDE,我有一个关于如何使用硒IDE定位特定元素的问题。找到硒元素上的一个元素

我有类似HTML的以下内容:

<div id="locator"> 
<table class = "table-1"> 
</table> 
<div class="something else"> 
</div> 
<table class = "table-1"> 
    <tbody> 
    <tr> 
    <th>...</th> 
    <td> 
    <div class="adder">....</div> 
    </td> 
    </tr> 
</table> 
</div> 

的问题是,我想找到第二个表元素 谁能理解我怎么做到这一点的div元素? 在此先感谢。

回答

0

使用伪类:nth-of-type

driver.FindElement(By.CssSelector("table.table-1:nth-of-type(2) > tbody > tr > td > div.adder")); 

如果使用硒IDE,然后使用

css=table.table-1:nth-of-type(2) > tbody > tr > td > div.adder 

Selenium IDE documentation

当然你也可以用XPath代替css(http://docs.seleniumhq.org/docs/02_selenium_ide.jsp#locating-by-xpath)。

CSS选择器支持所有CSS1,CSS2和CSS3选择 除了在CSS3命名空间中,一些伪类(:第n的类型, :第n-最后的型:第一OF- type:,last-of-type,:only-of-type, :visited::hover,:active,:focus,:indeterminate)和伪元素(:: first-line,:: first-letter,: :选择::前,后::)

+0

感谢您的帮助,但我使用硒IDE - 一个基本的:)。你知道我怎么用selenium IDE做到这一点?谢谢 – echo

+0

@ user2660402查看已更新的答案 – wolfrevo

+0

非常感谢。它仍然不适合我,但是来自您的文档非常有用,我会对其进行调查。 – echo

0

试试这个....

driver.FindElement(By.CssSelector(“div#locator table:n-type-type(2) div.adder”));

+0

感谢您的帮助,但我没有使用硒webdriver,我使用硒IDE - 基本的:)。你知道我怎么用selenium IDE做到这一点?谢谢 – echo

0

我知道这是旧的,但上面提到的选择器是错误的。 CSS不支持一些伪类和伪元素。下面列出了不支持的。

css=table.table-1:nth-child(2) > tbody > tr > td > div.adder

6.7。 CSS

CSS定位器策略使用CSS选择器来查找页面中的元素。硒通过3个选择支持CSS语法1 CSS3除外命名空间和以下内容:

pseudo-classes  pseudo-elements 

:nth-of-type   ::first-line 

:nth-last-of-type  ::first-letter 

:first-of-type  ::selection 

:last-of-type   ::before 

:only-of-type   ::after 

:visited  

:hover 

:active 

:focus 

:indeterminate