首页 文章

Selenium(Java)消息“无法定位元素”但存在元素和xpath

提问于
浏览
1

我是Selenium WebDriver的新手,使用NetBeans java和Firebug for Firefox来获取xpath . 问题是即使某些元素在浏览器中可见并可点击,并且firebug找到xpath,我仍然会收到错误“无法找到元素” . 问题是,元素不在框架中(没有框架),不在另一个窗口中,它是可见的和可点击的,并且它具有清晰的xpath . 我使用Wait和Thread.sleep,没有帮助 . 此外,尝试了我可以在Stackoverflow上找到的所有解决方案,类似于此事 . 元素在表格内部,里面有一些“div”元素 . 这是xpath:

.//*[@id='NavigationRadPanelBar_i2_i0_trvStandardView']/ul/li[3]/div/span[3]

看起来面板是一个问题,因为它也无法定位面板 . 我在同一个面板中尝试了另一个元素,其中包含 Headers 和文本:

driver.findElement(By.xpath("//*[contains(text(),'Technical Attributes')]")).click();

但仍然有同样的信息 . 类似于此面板和面板本身内的所有元素 . 似乎无论我尝试了什么,都无法找到 . 这个面板之外的所有东西都可以和司机一起使用 . 页面有一个左侧面板,这些元素位于其中,其中一些是可以展开的节点,一些只是链接,但没有任何东西可以定位 . 什么是元素的原因显然存在和可见但仍然无法通过WebDriver定位?

我试图找到主面板:

driver.findElement(By.xpath(".//*[@id='NavigationRadPane']")).click();

但仍然是同样的例外 .

这是html的一部分(它很长):

<div id="RAD_SLIDING_PANE_CONTENT_navigatiionRadSlidingPane" class="rspSlideContent" style="overflow: hidden; width: 200px; height: 579px;">
  <div id="NavigationRadPanelBarPanel" style="display: block;">
    <div id="NavigationRadPanelBar" class="RadPanelBar RadPanelBar_Office2007" postback="false" style="background-color:GhostWhite;height:100%;width:100%;">
      <ul class="rpRootGroup">
        <li class="rpItem rpFirst">
          <li class="rpItem">
            <li class="rpItem rpLast">
              <a class="rpLink rpExpandable rpExpanded" href="#">
                <div class="rpSlide" style="display:block;">
                  <ul class="rpGroup rpLevel1 111460" style="display: block; height: 274.731px; width: 100%;">
                    <li class="rpItem rpFirst rpLast">
                      <div class="rpTemplate">
                        <div id="NavigationRadPanelBar_i2_i0_trvStandardView" class="RadTreeView RadTreeView_Office2007">
                          <ul class="rtUL rtLines">
                            <li class="rtLI rtFirst">
                              <li class="rtLI">
                                <li class="rtLI">
                                  <div class="rtMid">
                                    <span class="rtSp" />
                                    <span class="rtPlus rtPlusHover" />
                                    <img class="rtImg" src="..." alt="Technical Attributes" />
                                    <span class="rtIn" title="Technical Attributes">Technical Attributes</span>
                                  </div>
                                  <ul class="rtUL" style="display:none;">
                                </li>
                                <li class="rtLI rtLast">

2 回答

  • 0
    driver.switchTo().activeElement();
    

    这样,驱动程序将切换到您单击的面板 . 然后,您可以在面板中执行所需的其余操作 .

  • 0

    以下是您的问题的答案:

    错误说明全部 Unable to locate element 因为 xpath 对我来说似乎不对 .

    如果要单击 title 设置为 Technical Attributes 的元素,可以考虑尝试使用以下xpath:

    //div[@id='NavigationRadPanelBar_i2_i0_trvStandardView']/ul/li/li/li/div/span[@class='rtIn']
    

    //div[@id='NavigationRadPanelBar_i2_i0_trvStandardView']/ul/li/li/li/div/span[@title='Technical Attributes']
    

    如果这回答你的问题,请告诉我 .

相关问题