2017-04-07 34 views
0

硒:需要幫助找到一個元素類值

<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>

我試圖通過使用XPath來定位「TEST12」。但失敗...

String expectedText =「test12」;我們可以使用WebElement Name = driver2.findElement(By.xpath(「// div [contains(text(),''+ expectedText +'')]」));

任何人都可以有任何其他的想法嗎? 非常感謝!

+0

在[這裏]答案(http://stackoverflow.com/questions/23078308/selenium-and-xpath-定位一個包含鏈接的文本)stackoverflow問題可能會給你一個關於如何調試的線索。同樣你也可以使用By.className或By.cssSelector。 – Nishan

+0

您能否提供您正在獲取的異常詳細信息/ – Akarsh

+0

大家好, 感謝您的幫助。我使用這種方法成功查找文本。 // div [contains(text(),'Mary')] –

回答

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 S的所有4個具有除了最後一堂課,user相同的類。所以有了這個信息,我們可以創建一個CSS選擇器來查找這個元素。一種方法是

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

它返回包含用戶名稱的WebElement。與此是,如果有一堆像這樣的上市一堆用戶的頁面上的HTML塊,你會使用它像

System.out.println(getUserName().getText()); 

的一個問題。另一種情況可能是您想根據您已知的用戶名稱查找元素。在這種情況下,我們可以通過包含文本和用戶名來查找元素。我們可以寫出這樣

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

的功能,你會這樣稱呼它

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

謝謝你JeffC。這個功能運作良好 –