Java 使用Webdriver高亮显示元素后等待几秒钟

Java 使用Webdriver高亮显示元素后等待几秒钟,java,javascript,selenium,selenium-webdriver,Java,Javascript,Selenium,Selenium Webdriver,我试图强调一个元素。我希望高光保持大约5-6秒,但我不能这样做。 高亮显示的代码工作正常,但只在闪光灯下出现。我尝试使用thread.sleep()实现这一点,但未能实现 我可以使用显式等待或任何其他方法定义此类突出显示的条件等待 以下是突出显示元素的代码: import java.util.Set; import java.util.concurrent.TimeUnit; import org.openqa.selenium.*; import org.openqa.selenium.fi

我试图强调一个元素。我希望高光保持大约5-6秒,但我不能这样做。 高亮显示的代码工作正常,但只在闪光灯下出现。我尝试使用
thread.sleep()
实现这一点,但未能实现

我可以使用
显式等待
或任何其他方法定义此类突出显示的条件等待

以下是突出显示元素的代码:

import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class HighlightElement {
public WebDriver driver;
private String baseUrl;

public static void main(String[] args) {
    HighlightElement obj=new HighlightElement();
    obj.func();
    // TODO Auto-generated method stub

}
public void func(){
driver=new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

baseUrl="http://www.creativebloq.com/netmag/get-started-django-7132932";
driver.get(baseUrl);

WebElement ele=driver.findElement(By.xpath("//*[@id='main-  content']/section/article/div/div/figure[1]/img"));
highlightElement(driver, ele);
try {
    Thread.sleep(5000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

public void highlightElement(WebDriver driver, WebElement element) {
for (int i = 0; i < 2; i++)
{
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].setAttribute('style', arguments[1]);", element, "color: yellow;  border: 2px solid yellow;");
js.executeScript("arguments[0].setAttribute('style', arguments[1]);", element, "");
}}
}
import java.util.Set;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.*;
导入org.openqa.selenium.firefox.FirefoxDriver;
公共类HighlightElement{
公共网络驱动程序;
私有字符串baseUrl;
公共静态void main(字符串[]args){
HighlightElement obj=新的HighlightElement();
obj.func();
//TODO自动生成的方法存根
}
公共无效函数(){
驱动程序=新的FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
baseUrl=”http://www.creativebloq.com/netmag/get-started-django-7132932";
get(baseUrl);
WebElement ele=driver.findelelement(By.xpath(“/*[@id='main-content']/section/article/div/div/figure[1]/img”);
远光灯元件(驱动器、电子元件);
试一试{
睡眠(5000);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
public void highlightElement(WebDriver驱动程序,WebElement元素){
对于(int i=0;i<2;i++)
{
JavascriptExecutor js=(JavascriptExecutor)驱动程序;
js.executeScript(“参数[0].setAttribute('style',参数[1]);”,元素,“颜色:黄色;边框:2px纯黄色;”;
js.executeScript(“参数[0].setAttribute('style',参数[1]);”,元素“”;
}}
}

我还尝试在highlighElement()中使用sleep方法,但它也不起作用

你为什么不试试这样的

public void highlightElement(Driver, IWebElement element) 
    {
        for (int i = 0; i < 2; i++)
        {
            IJavaScriptExecutor js = (IJavaScriptExecutor) Driver;
            js.ExecuteScript("arguments[0].setAttribute('style', arguments[1]);", element, "color: yellow;  border: 2px solid yellow;");
            if (element.GetAttribute("style") != null)
            {
                Thread.Sleep(5000);
            }
            js.ExecuteScript("arguments[0].setAttribute('style', arguments[1]);", element, "");
        }
    }
public void highlightElement(驱动程序,IWebElement元素)
{
对于(int i=0;i<2;i++)
{
IJavaScriptExecutor js=(IJavaScriptExecutor)驱动程序;
js.ExecuteScript(“参数[0].setAttribute('style',参数[1]);”,元素,“颜色:黄色;边框:2px纯黄色;”;
if(element.GetAttribute(“style”)!=null)
{
睡眠(5000);
}
js.ExecuteScript(“参数[0].setAttribute('style',参数[1]);”,元素“”;
}
}

我的是C。但是转换应该不太困难,如果我没有误解您的问题,这应该可以工作

如果我错了,请纠正我,但是您的highlightElement函数似乎将元素设置为高亮显示,然后立即禁用高亮显示。尝试删除循环中的最后一行,看看高亮显示是否仍然存在是的,但是如果删除最后一行,元素将永远高亮显示。高亮显示必须在几秒钟后消失。它有效。谢谢但是我想更多地使用显式等待。我可以在这里使用它吗?不确定你在那里想要完成什么,如果元素高亮显示,你想要等待多长时间?