在硒中等待几秒钟?

Abh*_*war 1 java selenium selenium-webdriver

我已经编写了一个 selenium 代码来选择浏览器上的一个按钮并单击它,但我希望 selenium 在移动到该元素时等待几秒钟。我该怎么做?以下是我尝试过的代码,但它对我不起作用。

我的代码:

    Actions actionobj = new Actions(fd1);       
    actionobj.moveToElement(heatmap);
    actionobj.perform();    
    fd1.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);   
    Actions action2 = new Actions(fd1);     
    action2.click(heatmap);
    action2.perform();
Run Code Online (Sandbox Code Playgroud)

我的代码工作正常,但当鼠标移动到按钮时它不会停止 10 秒。我也尝试过 Thread.sleep() 但这也不起作用。

ste*_*ong 5

似乎 Java Selenium API 有一个方法pause(long)

根据文档,它需要一个long代表暂停的毫秒数。

   Actions actionobj = new Actions(fd1);        
    actionobj.moveToElement(heatmap);
    actionobj.pause(10000); //wait 10 seconds
    actionobj.click(heatmap);
    actionobj.perform();
Run Code Online (Sandbox Code Playgroud)

imlicitlyWait()不会暂停您的代码。如果 aWebElement没有立即找到,这是一种让 Selenium 总是等待几秒钟的方法。

请注意,pause()已弃用。手动暂停代码是不好的做法。您应该质疑自己为什么认为有必要暂停您的代码。如果你想模拟一个等待 10 秒的人,那完全没问题,如果你想要一些其他元素或 javascript 完成加载,那么你应该考虑使用不同的方法。

编辑:并且您的代码不会中途暂停(即使您会使用Thread.sleep()),因为在Action.perform()执行整个序列时,您首先构建 Actions 对象,然后在执行时执行整个操作序列。