2015-10-05 79 views
0

我試圖找到使用Selenium WebDriver的多行文本。例如,我有這個網站:找到一個多行和硒webdriver文本。使用driver.pageSource()。包含

<div class="record-label" data-name="age_child1_c"> 
    LBL_AGE_CHILD 
</div> 

如果我的代碼:

driver.pageSource().contains("LBL_AGE_CHILD") 

硒是能夠找到該行。

但我需要找到>LBL_>LBL_是在不同的行。我試過\ n:

driver.pageSource().contains(">\nLBL_") 

但它沒有工作。有誰知道我可以如何找到該模式是不同的行中的字符串?

JeffC答案後編輯:

我的最終目標是在給定的頁面找到 「LBL_」。 因爲我認爲: driver.getPageSource()。contains(「LBL_);是更好的方法。 這行代碼尋找」LBL_「,即使」LBL_「沒有顯示在那一刻,什麼是

問題是如果selenium在代碼上查找「LBL_」,在大多數情況下可以找到某些包含「LBL_」的屬性,例如: menu-item =「LBL_CREATE_DASHBOARD_MENU」

這個「LBL_」從不在頁面上顯示,因爲我不想找到它。當頁面上顯示「LBL_」時總是在模式下:「> LBL_」(但是>和LBL_可能在不同的行中,像這種情況)

+0

OK。這現在更有意義。我看到你正在嘗試做什麼......你想要找到字符串「LBL_」,無論它在頁面上的位置,隱藏的或可見的元素等等。所以當你找到「LBL_」時,你想要什麼做?你想打印包含它的元素還是打印剩餘的LBL_ ...字符串或? – JeffC

+0

創建一個布爾變量,該值取決於LBL_是否存在,並在Junit斷言中使用此變量來運行測試。 – alvaro

+0

那麼這比我想象的要簡單得多...爲什麼'driver.pageSource()。contains(「LBL_AGE_CHILD」)'夠好了?你爲什麼試圖尋找「>」? – JeffC

回答

0

做主持後,新的信息...

如果你真的需要找到「>(東西)LBL_(東西)」,那麼我會考慮正則表達式。像這樣的東西應該指向正確的方向。

String regex = ">\\s*(LBL_\\w+)\\s*<"; 
Matcher matcher = Pattern.compile(regex).matcher(pageSource); 
matcher.find(); 
System.out.println("Count: " + matcher.groupCount()); 
for (int i = 0; i < matcher.groupCount(); i++) 
{ 
    System.out.println(i + ": " + matcher.group(i)); 
} 
+0

謝謝傑夫, 我不知道模式「> LBL_」在真實情況下的代碼在哪裏。所以,我無法使用該cssSelector,因爲該模式甚至可能會在不同的未知cssSelector下的代碼上出現很多次。 – alvaro

+0

我的最終目標是在給定頁面中找到「LBL_」。因此,我認爲: driver.getPageSource()。contains(「LBL_」);是更好的方法。 即使當時沒有顯示「LBL_」,該行也會查找代碼中的「LBL_」,這對我達成目標有什麼意義。 的問題是,如果硒查找「LBL_」的代碼,在大多數情況下會發現,含有「LBL_」一些屬性,例如:從不顯示 菜單項=「LBL_CREATE_DASHBOARD_MENU」 這種「LBL_」在頁面上,因爲我不想找到它。當頁面上顯示「LBL_」時總是處於模式下:「> LBL_」 – alvaro

相關問題