OpenQA.Selenium.NoSuchElementException:'无法找到元素'

时间:2017-07-13 17:17:39

标签: c# selenium xpath selenium-webdriver

我正在尝试使用xpath页面查找并单击元素。 当我点击特定元素并使用firebug检查它时,路径永远不会工作,即使firebug能够找到相对路径和绝对路径,它似乎也找不到?

IWebDriver driver = new FirefoxDriver();
   driver.FindElement(By.XPath(
            "html/body/div[5]/div/div[103]/div[2]/div/div[1]/div[5]/div/div[3]/div[2]/div/img[2]")).Click();

这是firebug识别的相对路径

  .//*[@id='16']/div[2]/div/div[1]/div[5]/div/div[3]/div[2]/div/img[2]


  <img class="Qv_CellIcon_right Qv_ULC" alt="" style="cursor: pointer; max-width: 202px; max-height: 16px;" src="/QvAjaxZfc/QvsViewClient.aspx?datamode=binary&name=ULC&host=QVS%40fuzionpulse-tst&slot=&public=only&xrfkey=nX73wyD2jq281aHj"/>

1 个答案:

答案 0 :(得分:0)

非常详细的XPath存在无法定位的风险,因为HTML必须具有多么精确的结构才能匹配&#34;。

查看您提供的示例XPath / HTML,我看到id位于<img>中的父元素和类属性中,我将使用它来构建更简化的的XPath:

//*[@id='16']//img[@class='Qv_CellIcon_right Qv_ULC']

说明:

  • //*[@id='16'] - 选择第一个匹配的节点,其中id等于'16'
  • //img[@class='Qv_CellIcon_right Qv_ULC'] - 选择第一个匹配的<img>,其中class属性等于'Qv_CellIcon_right Qv_ULC'