使用Webdriver突出显示元素后等待几秒钟

时间:2014-07-27 19:17:19

标签: java javascript selenium selenium-webdriver

我正在尝试突出显示一个元素。我希望亮点保持5-6秒左右,但我无法这样做。 突出显示的代码工作正常,但它只出现在闪光灯中。我尝试使用thread.sleep()实现此目的,但无法实现。

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

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

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, "");
}}
}

我也尝试在highlighElement()中使用sleep方法,但它也没有达到目的。

1 个答案:

答案 0 :(得分:1)

你为什么不尝试这样的事呢

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, "");
        }
    }
我是C#。但它不应该太难转换,如果我没有误解你的问题,这应该工作