Firefox驱动程序无法检测到webelement

时间:2014-01-30 08:45:11

标签: java selenium selenium-webdriver

我一直试图通过WebDriver获取锚点链接,但不知何故,事情没有按预期工作,我没有得到元素。

以下是HTML结构:

<div id="1">
   <table width="100%">
      <tr>
         <td>.....</td>
         <td>
           <ul class="bullet">
              <li>....</li>
              <li>....</li>
              <li>
                 <a href="/abc/myText.html?asq=ahsdyrg347rfbwljidwbkjab">myText</a>
              </li> // myText is the text I am searching for
           </ul>
         </td>
      </tr>
    </table>
    <div>....</div>
</div>

<li>元素包含仅包含链接的锚标记。没有id或它们包含的任何其他属性。唯一的区别是他们显示的文字,因此,我正在通过myText来确切地检测我需要的内容。

为此,我一直在尝试的java代码是:

   driver.get("url");

   Thread.sleep()    //waiting for elements to get loaded. Exceptional Handling not done.
   WebElement divOne = driver.findElement(By.id("1"));

   WebElement ul = divOne.findElement(By.className("bullet"));

  WebElement anchor = null;
    try{ 
        anchor = ul.findElement(By.partialLinkText("myText"));
    }catch(NoSuchElementException ex){
        LOGGER.warn("Not able to locate tag:" + linkText + "\n");
    }
   String myLink = anchor.getAttribute("href");   // null pointer exception

我不明白为什么会这样。这样做的正确方法是什么?我应该使用其他方法吗?

4 个答案:

答案 0 :(得分:1)

driver.findElement(By.xpath("//a[contains(text(),'myTest')]")); 

搜索myTest文本。我没有尝试过代码,希望对你有帮助

答案 1 :(得分:0)

您可以使用以下任何一项。应该适合你

List<WebElement> anchor = driver.findElements(By.partialLinkText("myText"));

driver.findElements(By.linkText("myText"))

driver.findElements(By.Xpath("//a[contains(text(),'myText')]"));

答案 2 :(得分:0)

String myLink = anchor.getAttribute("href");   // null pointer exception

您正在获取异常,因为您没有设置锚值,创建了锚变量并初始化为null,之后它永远不会更新。

我认为正确的代码应该在

之下
String myLink = element.getAttribute("href");

答案 3 :(得分:0)

尝试直接使用WebDriver个实例代替WebElement个实例...即,使用driver代替ul ..

你可以尝试等待,

element = new WebDriverWait(driver,10).until(ExpectedConditions.visibilityOfElementLocated(By.linkText("myText")));