<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。
请帮忙。感谢
答案 0 :(得分:0)
您要查找的元素位于iframe中。 iframe的ID是&#34; mailroifrm12&#34;。因此,在调用findElement(...)之前,您需要先调用wd.switchTo().frame("mailroifrm12");
。
如果不先切换到该帧,就无法找到iframe内的元素。