如何使用nth-child或nth-of-type选择B(或C)的段落标记?我使用的是Selenium WebDriver。
<tr>
<td>
<p class="myClass">A</p>
</td>
</tr>
<tr>
<td>
<p class="myClass">B</p>
</td>
</tr>
<tr>
<td>
<p class="myClass">C</p>
</td>
</tr>
背景:我正在尝试使用Selenium WebDriver自动化测试,并且由于nth(i)仅适用于IDE,我正在尝试确定如何使用标准CSS选择器来获取元素。
选择第一个元素时,它可以工作,但在选择第n个元素时则不行。我认为这是由于嵌套造成的
这不起作用:
.myClass:nth-of-type(2)(未找到定位符,根据Selenium IDE)
.myClass:nth-child(2)(根据Selenium IDE找不到定位器)
答案 0 :(得分:4)
这适用于Selenium WebDriver:
String css = ".myClass";
List<WebElement> list = driver.findElements(By.cssSelector(css));
WebElement e = list.get(n);
这不太理想,但它确实有效。
答案 1 :(得分:1)
不是:contains()css选择器函数吗?
driver.FindElements(By.cssSelector("p.myClass:contains('B')"));
答案:不,因为:contains()是一个JQuery伪函数。
如果您使用的是C#,请导入SizSelCsZzz for JQuery功能。然后你可以这样做:
driver.FindElements(new ByJQuery.ByJQuerySelector("p.myClass:contains('B')", true));
另外,对于nth-child,它也是一个JQuery伪函数。类似地:
using SizSelCsZzz;
namespace YourNamespaceHere
{
public class YourClass
{
By selectB = new ByJQuery.ByJQuerySelector("p.myClass:nth-child(2)", true);
}
}
答案 2 :(得分:0)
使用此选项选择B:
table tr:nth-child(2) td p {/*your styles here */}
答案 3 :(得分:0)
我不知道selenium(所以这可能没用),但是如果你需要使用标准的CSS选择器,你可以像这样选择'C':
table tr + tr + tr > td > p {color:blue;}
答案 4 :(得分:0)
p标签没有兄弟元素,因为它们位于不同的列上。尝试在tr标记上使用nth-child伪类。例如,要更改奇数行的背景:
table tr:nth(odd){
background-color: #color-code;
}