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

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


面板似乎有问题,因为它也无法定位面板。我在同一面板中尝试了另一个具有标题和文本的元素:

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


但仍然收到相同的消息。该面板内部的所有元素和面板本身都类似。看来无论我尝试了什么,都无法找到。该面板之外的所有内容都可以与驱动程序正常工作。
Page具有这些元素所在的左侧面板,其中有些是可以扩展的节点,有些只是链接,但是什么也找不到。
是什么原因导致元素明显存在并可见,但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">

最佳答案

driver.switchTo().activeElement();


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

07-24 09:47
查看更多