【问题标题】:Find element with selenium by display text通过显示文本查找带有硒的元素
【发布时间】:2016-12-04 08:22:21
【问题描述】:

我试图用 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")) 

这也不起作用。谁能告诉我我做错了什么?

【问题讨论】:

    标签: c# html selenium


    【解决方案1】:

    您在 By.XpathBy.LinkText 中使用了不正确的 xpath 语法,仅适用于带有文本的 a 元素,By.ClassName 看起来不错,但可能有更多具有该类名称的元素,这就是您不能这样做的原因得到正确的元素,所以你应该尝试使用下面提供的带有文本的 xPath:-

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

    或者

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

    或者

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

    希望它有效...:)

    【讨论】:

    • 我这辈子都做不到。 C#: var x = _driver.FindElement(By.XPath("//span[text() = 'Applications']")); HTML:应用程序
    【解决方案2】:

    最好忽略文本周围的空格:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 2017-07-05
      • 2021-05-07
      • 2014-03-21
      • 2018-12-25
      • 2011-03-06
      相关资源
      最近更新 更多