当前位置: 首页 > 知识库问答 >
问题:

flutter - 如何在Flutter的WebDriver中监听网页刷新?

督弘化
2024-02-06

Flutter中WebDriver如何监听网页刷新?

  import 'package:webdriver/sync_io.dart';  final WebDriver driver = createDriver(      uri: Uri.parse('http://localhost:4444/wd/hub/'),      desired: {        'browserName': 'msedge',        'ms:edgeOptions': {          'binary':              r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"        }      },      spec: WebDriverSpec.Auto);  driver.get('https://baidu.com/');  driver.addEventListener((event) {    print(event);  });  driver.timeouts.setScriptTimeout(const Duration(days: 7));  final result = driver.execute('''    location.reload();    return "Hello, World!";  ''', []);  print(result);

我尝试过使用addEventListener,但是这个函数似乎只能监听Flutter与WebDriver的通讯,无法监听浏览器事件

共有1个答案

严成礼
2024-02-06

你的尝试已经非常接近了。addEventListener函数可以监听浏览器事件,但是你需要监听的是Reload事件,而不是Flutter与WebDriver的通讯事件。

在WebDriver中,你可以使用executeScript方法来监听浏览器事件。以下是一个例子:

import 'package:webdriver/sync_io.dart';final WebDriver driver = createDriver(  uri: Uri.parse('http://localhost:4444/wd/hub/'),  desired: {    'browserName': 'msedge',    'ms:edgeOptions': {      'binary':          r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"    }  },  spec: WebDriverSpec.Auto);driver.get('https://baidu.com/');driver.executeScript('return window.onbeforeunload') // 返回浏览器在刷新或关闭前触发的函数  .then((String functionDeclaration) async {    print('functionDeclaration: $functionDeclaration');  });// 或者使用 executeScript 执行返回函数声明的操作driver.executeScript('window.onbeforeunload = function() { return "你确定要离开吗"; }')  .then((dynamic result) {    print('刷新页面');    driver.navigate().refresh();  });

注意:这种方法可能会因为浏览器或Flutter WebDriver的实现不同而无法工作。这只是一个可能的解决方案,并不能保证在所有情况下都能正常工作。

 类似资料:
  • 我试图为一个使用蓝牙进行通信的应用程序启动一个flutter项目。为此,我使用了flutter blue。 不幸的是,当尝试(在Android设备上)运行我创建的第一个示例时,遇到了以下错误: 如果我在Android Studio上,我会知道如何升级Android minSdkVersion,但在一个扑朔迷离的项目(使用VSCode)上,我有点迷失了。 是否有可能用颤振来增加最小Sdk版本,以及如

  • 需要在一个页面上有多个listview。我已经学习了很多教程,但没有一个能给我完美的解决方案。 为了更多的理解。我正在打4个网络呼叫,所有的响应类型不同。我只需要在一页纸上展示它。在这里,人们展示了使用SingleChildScrollView或扩展的解决方案。但没有一种解决方案起作用。 我希望有人能帮我摆脱这一切。谢谢.

  • uniapp项目如何监听页面刷新

  • 问题内容: 如何在Flutter中解码JSON? 问题很简单,但答案至少对我来说不是。 我有一个使用大量JSON字符串的项目。基本上,应用程序和服务器之间的整个通信是通过JSON进行的。 我一直在使用它来处理它,但今天我更新了Flutter核心(0.5.8-pre.178),并且JSON.decode不再可用。 我去了Flutter Docs寻求帮助,但仍然说要使用JSON.decode。 那么,

  • 问题内容: 我想创建一个新闻应用程序,并且已将newsapi.org用作源。 我正在尝试获取Http库提供的JSON数据。 我在下面提供了完整的代码。 它不会给我任何错误,但不会加载任何数据,当我打印数据时,它可以打印所有内容,但无法显示。 我不是什么问题,但是我所有的项目都已停止解决此问题。 我正在寻找此代码的解决方案,因为它不起作用。 网络助手: 问题答案: 问题在于显示文章。yaa也正如@I

  • 我正在处理一些奇怪的遗留代码。他们有一个实现JPanel的自定义对象。这个< code>JPanel对象是主应用程序中的第二个弹出屏幕。我遇到的问题是检测辅助弹出屏幕何时关闭。 我尝试为该类实现一个,但是当我尝试添加它时,没有与此对象关联的。我假设这是因为他们正在使用一个自定义对象,它是一个嵌入式弹出屏幕。 我尝试使用以下命令检索: 这在上失败。我不知道为什么在这个页面上检测右上角的“x”关闭按钮