我正在我的Java Selenium測試套件中運行一個隱藏網頁動態元素(如基於位置的電話號碼)的方法,所以當我稍後進行截圖比較時 - 因爲這些,它不會失敗。如何減少要隱藏的元素列表中的重複代碼(Java/webDriver)
我試圖減少這種方法中代碼的重複部分。我使用的findElements每次都會返回一個元素的所有實例,所以然後我通過每個元素循環來隱藏它。然而,我每次都調用相同的JavaScript命令 - 所以我想也許有辦法做到這一點更整潔 - 但我很努力這樣做。改變的位是元素的變量名稱和通過Selenium找到它的方法。希望這是有道理的!
我的代碼是:
private void hideDynamicElements() throws IOException, InterruptedException {
List<WebElement> dynamicTelephoneNumbers = driver.findElements(By.className("telephone-number"));
for (WebElement hideElement : dynamicTelephoneNumbers){
((JavascriptExecutor) driver).executeScript("arguments[0].style.visibility='hidden'", hideElement);
}
List<WebElement> dynamicChatWindow = driver.findElements(By.cssSelector("#chatContainer"));
for (WebElement hideElement : dynamicChatWindow){
((JavascriptExecutor) driver).executeScript("arguments[0].style.visibility='hidden'", hideElement);
}
List<WebElement> dynamicDemoChat = driver.findElements(By.cssSelector("#demoFormChat"));
for (WebElement hideElement : dynamicDemoChat){
((JavascriptExecutor) driver).executeScript("arguments[0].style.visibility='hidden'", hideElement);
}
List<WebElement> dynamicDemoChatCTA = driver.findElements(By.className("reach-out"));
for (WebElement hideElement : dynamicDemoChatCTA){
((JavascriptExecutor) driver).executeScript("arguments[0].style.visibility='hidden'", hideElement);
}
List<WebElement> dynamicBlogHeader = driver.findElements(By.cssSelector("div.cf.article-header"));
for (WebElement hideElement : dynamicBlogHeader){
((JavascriptExecutor) driver).executeScript("arguments[0].style.visibility='hidden'", hideElement);
}
List<WebElement> dynamicBlogFeed = driver.findElements(By.className("js-blog-feed-container"));
for (WebElement hideElement : dynamicBlogFeed){
((JavascriptExecutor) driver).executeScript("arguments[0].style.visibility='hidden'", hideElement);
}
TimeUnit.SECONDS.sleep(1); //Wait to be sure all elements have disappeared in the browser
}
這真是很好的建議,謝謝! –