我正在尝试将鼠标悬停在带有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"))
这也没用。有人能告诉我我做错了什么吗?
答案 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等)。