ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("extension_6_2_5_0.crx")); //ZenMate
options.addExtensions(new File("extension_2_9_2_0.crx")); //AdGuard
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(options);
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //Timeout after 10 seconds
这是我如何设置我的Chrome司机
try {
driver.navigate().to("http://dic.naver.com/");
}catch (TimeoutException e){
System.out.println("Time out Exception");
driver.navigate().refresh();
}
这是我的密码。
我运行它,然后它按预期捕获TimeoutException,但随后浏览器停止使用任何get()或navigate()。执行()或刷新命令。
Starting ChromeDriver 2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9) on port 6823
Only local connections are allowed.
Jul 18, 2018 8:47:45 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
[1531936076.034][SEVERE]: Timed out receiving message from renderer: 4.660
[1531936076.633][SEVERE]: Timed out receiving message from renderer: -0.606
Time out Exception
[1531936090.525][SEVERE]: Timed out receiving message from renderer: 10.000
[1531936090.563][SEVERE]: Timed out receiving message from renderer: -0.057
Exception in thread "main" org.openqa.selenium.TimeoutException: timeout
(Session info: chrome=67.0.3396.99)
(Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.17134 x86_64) .remote.RemoteWebDriver$RemoteNavigation.refresh(RemoteWebDriver.java:856)
at Markov.Bots.Bot_Kancolle.stay(Bot_Kancolle.java:43)
at Markov.Scroller.main(Scroller.java:71)
而是在执行驱动程序时抛出另一个TimeoutException。导航()。刷新();第43行
当我执行另一个驱动程序时,浏览器只是在TimeoutException停止,不刷新,不连接到新的URL。得到()
如何正确捕获TimeoutExcure并重用此浏览器进行下一个URL连接???
可能在超时异常后,您可以使用下面给出的javascript停止页面加载。这可能对你有帮助。
try {
driver.navigate().to("http://dic.naver.com/");
}
catch (TimeoutException e){
System.out.println("Time out Exception");
((JavascriptExecutor)driver).executeScript("window.stop();");
}
您可以像这样重复使用会话:
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import java.io.*;
import java.lang.reflect.Field;
import java.net.URL;
import java.util.*;
import java.awt.*;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.*;
import org.openqa.selenium.remote.http.W3CHttpCommandCodec;
import org.openqa.selenium.remote.http.W3CHttpResponseCodec;
public class Test {
public static void main(String[] args) throws InterruptedException, AWTException, IOException {
RemoteWebDriver driver = new ChromeDriver();
HttpCommandExecutor executor = (HttpCommandExecutor) driver.getCommandExecutor();
URL url = executor.getAddressOfRemoteServer();
SessionId session_id = driver.getSessionId();
driver.manage().timeouts().pageLoadTimeout(0, TimeUnit.SECONDS);
try {
driver.navigate().to("http://dic.naver.com/");
}catch (TimeoutException e){
System.out.println("Time out Exception");
driver = createDriverFromSession(session_id, url);
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.get("https://stackoverflow.com/");
}
}
public static RemoteWebDriver createDriverFromSession(final SessionId sessionId, URL command_executor){
CommandExecutor executor = new HttpCommandExecutor(command_executor) {
@Override
public Response execute(Command command) throws IOException {
Response response = null;
if (command.getName() == "newSession") {
response = new Response();
response.setSessionId(sessionId.toString());
response.setStatus(0);
response.setValue(Collections.<String, String>emptyMap());
try {
Field commandCodec = null;
commandCodec = this.getClass().getSuperclass().getDeclaredField("commandCodec");
commandCodec.setAccessible(true);
commandCodec.set(this, new W3CHttpCommandCodec());
Field responseCodec = null;
responseCodec = this.getClass().getSuperclass().getDeclaredField("responseCodec");
responseCodec.setAccessible(true);
responseCodec.set(this, new W3CHttpResponseCodec());
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else {
response = super.execute(command);
}
return response;
}
};
return new RemoteWebDriver(executor, new DesiredCapabilities());
}
}
这是一个工作示例,它创建一个驱动程序
实例,当驱动程序
抛出TimeoutExc0019时,创建一个具有相同会话的新实例(驱动程序)。并且驱动程序
从第一个驱动程序
管理窗口。
我用的是ChromeDriver。这是我用来设置超时的代码。 这是连接到URL的代码。 这段代码位于一个for循环中,该循环迭代URL字符串列表。一旦“skip”设置为真,它对该网页不做任何操作,并在循环的下一次迭代中连接到下一个URL。 我想做的是,当一个网页挂起(卡在无限负载中)时,我想捕获TimeoutException,跳过该网页并连接到循环中的下一个URL。 但一旦捕获到TimeoutE
在我的REST API中,我有一个过滤器,该过滤器检查每个请求,以查看令牌是否是原样。下面是代码。 当用户登录到应用程序时,将调用上述代码。但是,令牌将在60分钟内过期。我知道,在令牌过期后,要么我必须带用户返回登录屏幕,要么刷新令牌。我把这里和这里的建议都看了一遍 但我不明白以下几点。 如何分配并将此令牌发送回用户?当前,当用户登录时,他将获得令牌并将其保存在一个变量中。为了使刷新的令牌工作,我
问题内容: 在下面的代码中,我按预期在100秒后捕获了TimeoutException。在这一点上,我希望代码从main退出,而程序终止,但它会一直打印到控制台。如何使任务在超时后停止执行? 问题答案: 您需要在超时时取消任务(并中断其线程)。那就是方法。:
问题内容: 这是一个困扰我几个小时的问题,我 自己无法找到解决方案…… 我在网上发现了类似的话题,但是我找不到 很好的解释并且尽可能简单的解决方案的完全相同的问题。我也 看过EDT和SwingWorker API文档,但对 我来说太复杂了:( 所以,让我们说清楚。我有一个带有JLabel的简单JFrame,其中 包含我的图像: It’s invoked by this piece of code:
我使用Telerik的演示页面上显示的编辑网格。编辑网格后,我希望网格刷新。编辑网格后,网格是否有调用的任何事件? 我试图使用数据绑定事件。在本例中,我读取数据源,但它告诉我刷新网格是一个无限循环。我试图使用saveChanges事件,但它不起作用。
问题内容: 我有一个php脚本,只生成到客户端的日志。 当我回声时,我希望将其即时传输到客户端。 (因为在处理脚本时,页面为空白) 我已经使用和玩过了,但是它们没有用。 最好的解决方案是什么? PS:在通话结束时冲水有点脏… 编辑:答案都行不通,PHP还是Apache错误? 问题答案: 编辑: 我在阅读手册页上的评论时遇到一个错误,该错误指出 不能正常工作 ,以下是解决方法: 如果这不起作用,那么