我不想在 Selenium 和 Java 中制作文件上传方法时将 Thread.sleep() 与 Action 类一起使用



我正在使用Robot类制作通用方法来上传文件。但是在创建Robot类的对象之后,我必须调用Thread.sleep()方法。是否有其他方法来添加等待,因为使用Thread.sleep()方法不是一个好方法。

public static void uploadFile(String EnterFilePath) throws AWTException {
setClipboardData(EnterFilePath);
Robot rb = new Robot();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rb.keyPress(KeyEvent.VK_ENTER);
rb.keyRelease(KeyEvent.VK_ENTER);
rb.keyPress(KeyEvent.VK_CONTROL);
rb.keyPress(KeyEvent.VK_V);
rb.keyRelease(KeyEvent.VK_CONTROL);
rb.keyRelease(KeyEvent.VK_V);
rb.keyPress(KeyEvent.VK_ENTER);
rb.keyRelease(KeyEvent.VK_ENTER);

}

如果我没有使用Thread.sleep()方法,那么它根本没有执行动作序列。

虽然问题不清楚,但我会试着回答。

你的Thread.sleep()是有原因的。我最好的猜测是它正在等待页面加载。您的DOM应该准备好启动操作了。而不是在任何方法中使用Random Thread.sleep()。

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

上面的代码将等待10秒来加载页面。如果页面加载超过时间,它将抛出TimeoutException。