Selenium:需要帮助来定位元素一个类值

时间:2017-04-07 15:41:09

标签: selenium-webdriver



<div id="sessions" class="container" style="display: block;">
<div id="usrSessionList" class="list" style="height: 109px;">
<div class="alert alert-info emptyList" style="text-align: center; display: none;" data-i18n="emptySession">No existing session</div>
<div id="D37867BB-56BE-10C0-3421-904FF75AAE23" class="row tableHeight">
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 user">test12</div>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 opr"/>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 lstOprId"/>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 evt">USR_IN</div>
</div>
<div id="6E1385ED-3027-2B84-9183-433139FDE868" class="row tableHeight">
<div id="96235B5D-C8B4-5310-6E8F-B247B17482A2" class="row tableHeight">
<div id="A7BEF619-31C6-C7A9-A4C3-33B8EE583D4D" class="row tableHeight">
</div>
</div>
<div id="sessionConversation" style="display: none;">
</div>
</div>
&#13;
&#13;
&#13;

我想找到&#39; test12&#39;通过使用xpath。但是失败了......

String expectedText =&#34; test12&#34 ;;
WebElement Name = driver2.findElement(By.xpath(&#34; // div [contains(text(),&#39;&#34; + expectedText +&#34;&#39;)]&#34; ));

任何人都可以有任何其他想法吗? 非常感谢!

1 个答案:

答案 0 :(得分:0)

我喜欢为这样的事情编写函数,因为它可能会被重用。对于此示例,看起来您正在寻找用户。

如果查看本节的HTML

<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 user">test12</div>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 opr" />
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 lstOprId" />
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 evt">USR_IN</div>

你会发现除了最后一个类DIV之外,所有这些user中的4个都有相同的类。所以有了这个信息,我们可以创建一个CSS选择器来找到这个元素。一种方法是

public WebElement getUserName()
{
    return driver.findElement(By.cssSelector("div.user"));
}

返回包含用户名的WebElement。你会像

一样使用它
System.out.println(getUserName().getText());

这样做的一个问题是,如果页面上有一堆像这样的HTML列出一堆用户。另一种情况可能是您希望根据您已知的用户名找到该元素。在这种情况下,我们可以通过包含文本(用户名)找到元素。我们可以写一个像

这样的函数
public WebElement getUserName(String userName)
{
    return driver.findElement(By.xpath("//div[contains(@class, 'user')][.='" + userName + "']"));
}

你会称之为

System.out.println(getUserName("test12"));