gpt4 book ai didi

java - 如何减少要隐藏的元素列表中的重复代码 (Java/webDriver)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:37 25 4
gpt4 key购买 nike

我正在我的 Java Selenium 测试套件中运行一种方法,该方法隐藏网页中的动态元素(例如基于位置的电话号码),这样当我稍后执行屏幕截图比较时 - 它不会因为这些而失败.

我正在尝试减少此方法中重复的代码部分。我使用的是 findElements,它每次都会返回一个元素的所有实例,因此我会“for 循环”遍历每个元素以隐藏它。然而,我每次都调用相同的 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
}

最佳答案

创建一个像这样的函数:-

  void visiblity(String Classname, Element hideElement)
{
List<WebElement> dynamicBlogFeed = driver.findElements(By.className(Classname));
for (WebElement hideElement : dynamicBlogFeed){
((JavascriptExecutor) driver).executeScript("arguments[0].style.visibility='hidden'", hideElement);
}

在需要的时候一次又一次地调用这个函数。

希望对你有帮助:)

关于java - 如何减少要隐藏的元素列表中的重复代码 (Java/webDriver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37254275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com