无法使用selenium webdriver从span id获取动态文本

时间:2014-03-20 00:37:08

标签: selenium-webdriver

            <div id="pdiv">
            <table width="100%" cellspacing="0" cellpadding="0" border="0" align="left">
            <tbody>
            <tr>
            <td class="normtxt" width="100%" colspan="2">Please answer this simple math question</td>
            </tr>
            <tr>
            <td width="18%" align="left" style="padding:0">
            <span id="mathq2" style="padding-bottom: 5px;">6 + 4 = </span>
            </td>
            <td align="left">
            <span id="mathans2" style="display: none;">8</span>
            <input id="mathuserans2" type="text" name="mathuserans2" value="" style="width: 100px;">
            </td>
            <input type="hidden" value="32317377" name="txtPolliD">
            </tr>
            </tbody>
            </table>

我正在尝试使用webdriver从上面的html代码中获取动态范围文本,但获取:

org.openqa.selenium.NoSuchElementException:无法找到元素:{&#34;方法&#34;:&#34; id&#34;,&#34;选择器&#34;:&#34; mathq2&# 34;}

我需要获取文字:&#39; 6 + 4 =&#39;来自span id&#39; mathq2&#39;

本文&#39; 6 + 4 =&#39;每次页面刷新或加载新页面时都会进行操作

我尝试过xpath,id,cssselector但总是找不到无法找到元素:{&#34;方法&#34;:&#34; id&#34;,&#34;选择器&#34;:&# 34; mathq2&#34;}

这是我的代码:

  private static WebDriverWait wait = new WebDriverWait(wd,90);

 try{
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("mathq2")));
 }catch(org.openqa.selenium.TimeoutException e){
System.out.println("wait time outexception: " + e); 
  }


  wd.findElement(By.xpath(".//*[@id='mathq2']")).click();
  mathTxt = wd.findElement(By.xpath(".//*[@id='mathq2']")).getText();

 //wd.findElement(By.id("mathq2")).click();
 //mathTxt = wd.findElement(By.id("mathq2")).getText();


 //mathTxt = wd.findElement(By.cssSelector("#pdiv span.mathq2")).getText();

 //mathTxt = (String)((JavascriptExecutor)wd).executeScript("    {document.getElementById('mathq2').innerHTML;}");

我也试过javascriptexecutor 当我尝试了javascriptexecutor时:org.openqa.selenium.WebDriverException:document.getElementById(...)为null

顺便说一句,Selenium IDE正在使用xpath查找元素并存储文本。我将Selenium IDE测试用例导出到Java / Junit4 / Webdriver,然后在eclipse中运行并获得相同的NoSuchElementException。

请帮忙。感谢

1 个答案:

答案 0 :(得分:0)

您要查找的元素位于iframe中。 iframe的ID是&#34; mailroifrm12&#34;。因此,在调用findElement(...)之前,您需要先调用wd.switchTo().frame("mailroifrm12");

如果不先切换到该帧,就无法找到iframe内的元素。