我正在尝试突出显示一个元素。我希望亮点保持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方法,但它也没有达到目的。
答案 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#。但它不应该太难转换,如果我没有误解你的问题,这应该工作