如何使用selenium webdriver验证表中的工具提示消息?

时间:2017-05-05 11:18:19

标签: java selenium xpath selenium-webdriver

我必须使用selenium web driver验证表中显示的工具提示消息。我已经使用了actions类并使用了build.perform()但它返回一个空字符串。问题是,html代码的方式是工具提示标记与span标记合并。请告诉我如何解决此问题。

HTML代码:enter image description here

<div *ngIf="dataLocalUrl != undefined">
    <h5>iframe whit local url</h5>
    <iframe width="500" height="600" [attr.src]="dataLocalUrl" type="application/pdf"></iframe>
    <h5>object whit local url</h5>
    <object [attr.data]="dataLocalUrl" type="application/pdf" width="100%" height="100%"></object>
    <h5>embed whit local url</h5>
    <embed [attr.src]="dataLocalUrl" type="application/pdf" width="100%" height="100%">
</div>

xxx,yyy,zzz和xyz是我需要验证的文本。

我使用的方法:

<span class="abcd" data-qtip="<table><tr><td>xxx as of 05/04/2017  </td><td>$1.00</td></tr><tr><td>yyy</td><td>$1.00</td></tr><tr><tdzzz</td><td>$0.00</td></tr><tr><td>xyz</td><td>0.00%</tr></td></table>"/>

其中loc =元素的xpath。

对此有任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

试试这个:

Actions ToolTip1 = new Actions(driver);
WebElement pr = findElement(loc);
System.out.println(pr);
ToolTip1.moveToElement(pr).perform();
pause(2000);
String toolTipMsg =     driver.findElement(by.cssSelector("span.abcd")).getAttribute("data-qtip");
System.out.println(toolTipMsg);

答案 1 :(得分:1)

在鼠标悬停到webelement之后,使用getAttribute方法获取&#34; data-qtip&#34;的值。下面的行可以帮到你。

String toolTip = driver.findElement(By.xpath("//span[@class='abcd']")).getAttribute("data-qtip").toString();

将预期的消息存储在另一个字符串中,并将其与toolTip进行比较。

因为在这种情况下,字符串toolTip是Html,我们需要将其解析为所需的格式并将其与预期的字符串进行比较。下面的代码解析工具提示并提供需要验证的字符串。

System.out.println(toolTip);
String[] word1 = toolTip.split("<td>");
String a = word1[1].split(" ")[0];
System.out.println(a);
String b = word1[3].split("</")[0];
System.out.println(b);
String c = word1[6].split("</")[0];
System.out.println(c);
String d = word1[4].split("<td")[1].split("<")[0];
System.out.println(d);

我们甚至可以用更好的方式解析它,但这有效。稍后使用预期的消息验证a,b,c,d。感谢

答案 2 :(得分:0)

我一直在寻找更好的解决方案,我想出了这个。

步骤1:将结果存储在字符串

String Tooltip = driver.findElement(By.xpath("//span[@class='abcd']")).getAttribute("data-qtip").toString();

步骤2:使用一些正则表达式模式仅从&#34; td&#34;获取数据标记并将其添加到ArrayList。

ArrayList<String> lists = new ArrayList<>();
Pattern p = Pattern.compile("(<td>(.*?)<\\/td>)");
Matcher m = p.matcher(toolTip);
while(m.find()) 
{
    String tag2 = m.group(1);
    String tag = tag2.substring(4,(tag2.length()-5)); //removes the <td> and </td> tags in the matched string
    lists.add(tag);
    System.out.println(tag);
}

现在列表将包含所有表格数据。遍历列表元素并将其与预期的String进行比较。感谢。