我正在尝试突出显示一个元素。我希望亮点保留大约 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, "");
}}
}
我还尝试在 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, "");
}
}
我的是C#。但转换应该不会太难,如果我没有误解你的问题,这应该可行
关于java - 使用 Webdriver 突出显示元素后等待几秒钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984648/