当前位置: 首页 > 知识库问答 >
问题:

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

公西星文
2023-03-14
            <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:找不到元素:{“method”:“id”,“selector”:“MathQ2”}

我需要从span id“MathQ2”获取文本:“6+4=”

此文本“6+4=”在每次刷新页面或加载新页面时都在更改

我尝试过xpath、id、cssselector,但总是得到无法定位元素:{“method”:“id”,“selector”:“MathQ2”}

下面是我的代码:

  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(...)为空

顺便说一下,Selenium IDE使用xpath查找元素并存储文本。我将Selenium IDE测试用例导出到java/junit4/webdriver,然后在eclipse中运行它,并得到相同的NosuChelementException。

请帮帮忙。谢谢

共有1个答案

蒋弘致
2023-03-14

您试图定位的元素位于iframe中。该iframe的id是“mailroifrm12”。因此,在调用findElement(...)之前,需要首先调用:wd.switchTo().frame(“MailROIFRM12”);

如果不先切换到iframe帧,就无法定位iframe中的元素。

 类似资料:
  • java版本“1.8.0_25”java(TM)SE运行时环境(版本1.8-0_2-b18)java热点(TM)64位服务器虚拟机(版本25.25-b02,混合模式) Appia1.3.4.1 Android SDK ro . build . version . SDK = 21.. 使用的设备:-Nexus 7,5.0.2 你好 我使用下面的代码从android.webkit.webview获取

  • 尝试从span元素获取数字动态文本值。我的测试是数据驱动的,所以每次运行都需要从网页中获取文本(美元金额),然后将其与Excel中的期望值进行比较。由于某种原因,我的代码不起作用。请帮忙解决。 我得HTML: 我的定位器:By PRICE=By.xpath(“//div[@class='PRICE ng-binding'][@ng-hide='calc.iscalculating']/text()

  • 我有一个由html、js和css文件组成的restful应用程序。应用程序分为两个文件夹,常规文件夹和管理文件夹。我已经将这两个文件夹放在Spring静态目录下。 资源/主要/资源/静态/常规 src/main/resources/static/admin src/main/资源/静态/常规/index.html

  • 问题内容: 我动态地添加到(与和)。部分代码是从那里借来的。 我正在尝试从的组件获取文本,但无法成功。 编辑: 这是一个包含子面板,和。 这是AddButton的代码: 我试图从中获取文本的代码不起作用: } 您的答复将不胜感激。 问题答案: 问题是:您正在遍历以下子项: 并期望有一个: 但是,既然您已经添加了,jPanel1的子项就不会了! 因此,要访问,您必须在一秒钟内遍历的子项! 例:

  • 问题陈述:我试图在网页上获取span标记的值。*该网页上有多个span标记,其中我需要4个。

  • 我有一个neo4j数据库,其中存储了一些带有索引“航点”的点,我想在传递一些点后动态获取一些点。为此,我创建了占位符{name1}, 但是使用动态参数调用getWayPointByName时