我有一個關鍵字串列 ( ['a', 'b', 'c']),我想檢查哪些出現在給定的頁面上,使用 Selenium(理想情況下每個都帶有出現次數)。
天真的方法是使用 XPATH ( //*[contains(text(),'a')])(或正文、頁面源等)分別查找每個字串,但為每個字串一次又一次地遍歷整個頁面似乎是一種矯枉過正。
我有很多網站要檢查,所以我想有效地完成它。我是否只是從整個文本中獲取所有文本<html>(因此包括標題和<body>.開箱即用的解決方案?
uj5u.com熱心網友回復:
您可以搜索包含任何給定字串的元素,例如
//*[contains(text(),'a') or contains(text(),'b') or contains(text(),'c')]
然后檢查那里出現了什么特定的關鍵字并更新計數器等。
uj5u.com熱心網友回復:
如果您不需要以某種方式考慮內容的結構,那么獲取頁面的整個文本并計算關鍵字出現次數就完全可以了。
這是簡短的演示:
public static void main(String[] args) throws IOException {
WebDriver driver = null;
List<String> keyWords = Arrays.asList(new String[]{"selenium", "http", "something"});
try{
driver = new RemoteWebDriver(
new URL("http://selenium-hub:4444"),
new ChromeOptions()
);
driver.get("https://www.webelement.click/en/welcome");
String total = driver.findElement(By.tagName("body")).getText();
for(String keyWord: keyWords){
Pattern p = Pattern.compile(keyWord, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(total);
int i = 0;
while (m.find())
i ;
System.out.println("Keyword [" keyWord "] has [" i "] occurrences");
}
}finally {
if (driver != null){
driver.quit();
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/387448.html
