c# - 为什么 Selenium Webdriver 冻结 Windows 窗体应用程序?
问题描述
那里的任何人都可以帮助我解决这个问题。我什至在谷歌上搜索过,但一无所获。我制作了一个 Windows 窗体应用程序来抓取一些数据。问题是当我单击按钮时脚本以无头模式启动并且我正在使用 Chrome Web 驱动程序。然后它冻结了应用程序,它不允许我们在运行脚本时使用应用程序上的其他按钮。
有任何解决方案或任何其他框架或我可以做的事情吗?
解决方案
这与您的应用程序是单线程的事实有关。意味着它执行的所有代码都在单个线程上运行。因此,当您的用户更改 UI 状态时,您无法做一些工作,反之亦然。
一个好的解决方案是在不是您的应用程序用于 UI 的线程上运行“selenium 脚本”(或触发它的例程)。
您可以通过以下方式实现此目的:
- 使用任务类
- 使用线程类
- 使用 Windows 窗体中的BackGroundWorker类。
永远记住,您的默认执行线程(在 Windows 窗体中)是保持 UI 和应用程序活动的线程。
推荐阅读
- c - 等待来自多个进程的信号时 sigwait 有什么问题
- c++ - 在 mbed 中打开的 wav 文件的数量是否有限制?
- elasticsearch - 从 ElasticSearch 中的搜索中排除短语
- powershell - Powershell:根据月份和年份创建文件夹结构并相应地复制文件
- node.js - 尝试从 server.js 范围之外的文件夹中检索所有图像
- reporting-services - 尝试更改 Report Builder 3.0 中的查询时,出现错误“无法连接到数据库”
- pagespeed - Adsense 标签关闭时的完美选择
- html - 单选按钮将文本放在单选按钮下方
- tensorflow - 使用笔记本连接到谷歌云 TPU 的连接超时
- laravel - laravel 循环遍历具有深厚关系的雄辩模型