<div id="ColumnMask">
<div id="MiddleColumnPositioner">
<div id="LeftColumnPositioner">
<div id="MiddleColumnWrapper">
<div id="MiddleColumn">
<div class="bdrBottom">
<div class="pad">
<h2>Account Information</h2>
<br/>
<div class="padLeft padRight">
</div>
</div>
<!-- MiddleColumn -->
</div>
<!-- MiddleColumnWrapper -->
您好。我正试图找到标签,令人惊讶的是没有任何作用。以下是我的例子:
public IWebElement AccountInfoTitle()
{
return Driver.FindElement(By.XPath("//*[@id='MiddleColumn']/div[2]/h2[contains(.,'Account Information')]"));
}
public IWebElement AccountInfoTitle()
{
return Driver.FindElement(By.XPath("//h2 [contains(.,'Account Information')]"));
}
你知道为什么吗?它对我来说是正确的。
但如果我正在移动引号(把它们放在这样的['@ id = MiddleColumn'])它的工作完美,但我假设在这种情况下Selenium有点困惑,甚至没有验证它,因此它是通过测试。这是一个例子:
public IWebElement AccountInfoTitle()
{
return Driver.FindElement(By.XPath("//*['@id=MiddleColumn']/div['h2=Account Information']"));
}
提前致谢。
答案 0 :(得分:0)
不是完整的答案,而是其中的一部分:XPath
//*[@id='MiddleColumn']/div[2]/h2[contains(.,'Account Information')]
不会为您的输入返回任何内容,因为这是一种误解 - div[2]
选择不存在div
的元素的第二个直接子@id='MiddleColumn'
。
您输入的一个正确的XPath是
//*[@id='MiddleColumn']/div/div/h2[contains(.,'Account Information')]
为了说明 - XPath //*[@id='MiddleColumn']/div[2]/h2
适用于您的输入看起来像这样(相关部分):
<div id="MiddleColumn">
<div class="bdrBottom>Example</div> //div[1]
<div class="pad"> //div[2]
<h2>Account Information</h2>
对于应该工作的第二个XPath
//h2[contains(.,'Account Information')]
XPath表达式测试器返回了正确的结果,但我不确定h2
- //h2 [contains(.,'Account Information')]
之后的空间是否会导致Selenium失败。
答案 1 :(得分:0)
您可能希望将 AccountInfoTitle 方法更改为:
public IWebElement AccountInfoTitle()
{
return Driver.FindElement(By.XPath("//h2[contains(text(),'Account Information')]"));
}
答案 2 :(得分:0)
试试这个xpath:
<强> //div[@class='pad']/h2[.='Account Information']
强>
以上内容会将&#39; h2&#39; 元素与&#39;帐户信息&#39; 下的精确innerHTML /文本定位在&#39; div&#39; 元素,其class属性为&#39; pad&#39; 。
答案 3 :(得分:0)
我认为找到元素的最佳实践包含String,如下所示:
- 使用类名或id转发所有元素 在java中我们可以使用FindElements或FindElement我不确定但我认为在c#中相同
public IWebElements getMyElement(){
return Driver.FindElements(By.cssSelector(".pad");
}
你可以使用for循环找到你的元素:
public IWebElement getElementContainString(String expectedString){
for(int i=0; i<getMyElement().size(); i++){
IWebElement element = getMyElement().get(i).getText().toString();
if(element.contain(expectedString){
return getMyElement().get(i);
breack;
}
}