Adrenal1ne Asked:2020-12-20 17:48:41 +0000 UTC2020-12-20 17:48:41 +0000 UTC 2020-12-20 17:48:41 +0000 UTC 如何使用 selenium(java) 找到浏览器推送通知并点击它? 772 如何使用 selenium(java) 等待浏览器推送通知并在出现时单击它?我正在使用 chrome 驱动程序和 selenium 3。这是一个示例帖子 java 1 个回答 Voted Best Answer Senior Pomidor 2020-12-26T07:00:35Z2020-12-26T07:00:35Z 如果我没记错的话,那么每个通知的工作方式都不同。 解决方案 1. 在浏览器控制台中,添加一个 JS 代码,它将为我们打印通知 URL。我们收集这些数据并自行决定我们需要哪个 URL。 // это JS if ('Notification' in window) { messaging.onMessage(function(event) { console.log('url is: ', event.notification.click_action); }); } // Это Java String js = "if ('Notification' in window) {\n" + " messaging.onMessage(function(event) {\n" + " console.log('url is: ', event.notification.click_action);\n" + " });\n" + "}"; ((JavascriptExecutor) driver).executeScript(js); 接下来,在通知出现后,我们从控制台收集日志,并对其进行处理。可以通过以下方式获取日志: getDriver().manage().logs().get(LogType.BROWSER).getAll(); 我提醒您,每次调用都只返回新日志。您还需要在浏览器启动时启用对日志的支持。 LoggingPreferences logging = new LoggingPreferences(); logging.enable(LogType.BROWSER, Level.ALL); capabilities.setCapability(CapabilityType.LOGGING_PREFS, logging); 解决方案 2 在浏览器控制台中,添加将自动跟随通知链接的 JS 代码。这种方法的缺点是,如果一次有很多通知,它只会转到一个 URL。 if ('Notification' in window) { messaging.onMessage(function(event) { console.log('url is: ', event.notification.click_action); window.location.href = event.notification.click_action; }); } 有用的链接: 一、二 你可以在这里测试 打开网站。打开开发工具。 在控制台(Console 选项卡)中执行第一个或第二个 JS 脚本。 按发送按钮 第一个脚本将在控制台中打印“url is: www...”,第二个脚本将另外转到此 URL
如果我没记错的话,那么每个通知的工作方式都不同。
解决方案 1. 在浏览器控制台中,添加一个 JS 代码,它将为我们打印通知 URL。我们收集这些数据并自行决定我们需要哪个 URL。
接下来,在通知出现后,我们从控制台收集日志,并对其进行处理。可以通过以下方式获取日志:
我提醒您,每次调用都只返回新日志。您还需要在浏览器启动时启用对日志的支持。
解决方案 2
在浏览器控制台中,添加将自动跟随通知链接的 JS 代码。这种方法的缺点是,如果一次有很多通知,它只会转到一个 URL。
有用的链接: 一、二
你可以在这里测试