通过显示文本查找具有selenium的元素

时间:2016-07-29 14:55:14

标签: c# html selenium

我正在尝试将鼠标悬停在带有selenium的菜单栏中的元素上,但难以找到该元素。元素显示如下:

<DIV onmouseover="function(blah blah);" class=mainItem>TextToFind</DIV>

此类型有多个元素,因此我需要通过TextToFind找到此元素。

我试过了:

driver.FindElement(By.XPath("TextToFind"))

driver.FindElement(By.LinkText("TextToFind")) 

两者都不起作用。我甚至尝试过:

driver.FindElement(By.ClassName("mainItem")) 

这也没用。有人能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:7)

您在By.Xpath中使用的xpath语法不正确,By.LinkText仅适用于a元素,文本和By.ClassName看起来不错,但可能还有更多元素类名,这就是为什么你无法获得正确的元素,所以你应该尝试使用下面提供的带有文本的xPath: -

driver.FindElement(By.Xpath("//div[text() = 'TextToFind']"));

或者

driver.FindElement(By.Xpath("//div[. = 'TextToFind']"));

或者

driver.FindElement(By.Xpath("//*[contains(., 'TextToFind')]"));

希望它有效......:)

答案 1 :(得分:0)

使用以下方法更好地忽略文本周围的空格:

var elm = driver.FindElement(By.XPath("//a[normalize-space() = 'TextToFind']"));

这会在[a]元素中搜索文本,您可以将其替换为您感兴趣的任何元素(div,span等)。