所以我知道如何使用Selenium,并且我想创建一个聊天机器人。但是,我没有访问源代码,聊天是一个自定义编写的页面。这个页面发出了GET请求,然后站点返回了我想要的内容。我想使用Selenium来运行javascript (我知道怎么做),它要么等待下一个GET返回,要么返回最新返回的GET。在这一点上我可以解析出我不需要的东西。
我尝试过寻找一个javascript函数来做这件事,但是我所能做的就是找到一个监听请求的函数,而不是响应。谢谢!注意:在接下来的一段时间里,我将在这个页面上保持活跃,所以如果你需要代码或类似的东西,请一定要问!
发布于 2012-11-28 21:02:41
如何使用fluentWait()机制等待所有ajax:
public WebElement fluentWait(final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(org.openqa.selenium.NoSuchElementException.class);
WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}
);
return foo; } ;
fluentWait(By.xpath(...blablabla...));
//fluentWait(By.cssSelector(...blablabla...));
然后能够像这样进行js注入:
public void jsCodeExecution(String jsCode){
JavascriptExecutor js = (JavascriptExecutor)driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(jsCode);
js.executeScript(stringBuilder.toString());
}
或者立即使用jsInjection。How does JavaScript handle AJAX responses
https://stackoverflow.com/questions/13592933
复制相似问题