我正在尝试学习selenium,其中一个问题是等待元素加载,我来解释一下。
我正在使用Java程序自动翻译谷歌翻译。 但由于谷歌翻译的异步性质,没有办法在不等待的情况下获取元素,代码会崩溃,因为它找不到元素,并且元素在代码需要它的时候不存在,您必须稍等一下,直到服务器响应您的请求。
我认为这不是处理selenium和网页时陌生的情况,所以我认为一定有一种简单的方法来解决它。 目前,这是我创建的用于管理此情况的代码。
public void translation(String s) {
System.setProperty("webdriver.chrome.driver", "C:\\Robots\\chromedriver.exe");
WebElement webDriver = new ChromeDriver();
这是我认为应该有更好的方法来完成的代码, 我使用了一种等待翻译准备就绪的方法。
waitForElement("//*[@id='result_box']");
System.out.println("prhase: " + s + " tranlsation: " + response.getText());
webDriver.close();
}
private void waitForElement(String element) {
WebElement response;
do {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response = webDriver.findElement(By.xpath(element));
} while (response.getText().isEmpty());
}
你能告诉我如何轻松地做到吗?