WebKit 线程违规 - 从 UI 自动化中的辅助线程初始使用 WebKit

Posted

技术标签:

【中文标题】WebKit 线程违规 - 从 UI 自动化中的辅助线程初始使用 WebKit【英文标题】:WebKit Threading Violation - initial use of WebKit from a secondary thread in UI Automation 【发布时间】:2014-09-18 17:50:27 【问题描述】:

当我尝试使用 Xcode 6 通过终端运行我的自动化脚本时,我收到了以下错误消息:

WebKit Threading Violation - initial use of WebKit from a secondary thread. 

谁能帮我在 Xcode 6 中通过终端或仪器运行自动化脚本。

【问题讨论】:

我在使用 Appium 进行测试时也遇到了这个问题。我认为这是我的测试的阻塞问题,但事实并非如此。我开始使用 Appium 的 ios_webkit_proxy_launcher.js 在 iOS 上针对 Safari 进行测试,尽管我仍然在日志中收到此错误,但它不会阻止测试。 【参考方案1】:

我很少看到相同的消息——即使事情运行成功。

由于 XCode 6 命令行实用程序的更改,您可能无法从命令行运行仪器。

查看UIAutomation test invocation from the command line with Xcode 6

添加 -w 标志让事情再次为我工作。即

-w "Resizable iPad (8.0 Simulator)"

另外,请确保在应用文件路径之前传递 -w:

instruments -t "/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate" -w "iPad Air (8.0 Simulator)" "/path/to/My.app" -e UIASCRIPT "scriptola.js"

以下是设备列表:

可调整大小的 iPad(8.0 模拟器) 可调整大小的 iPhone(8.0 模拟器) iPad 2(7.1 模拟器) iPad 2(8.0 模拟器) iPad Air(7.1 模拟器) iPad Air(8.0 模拟器) iPad 视网膜(7.1 模拟器) iPad 视网膜(8.0 模拟器) iPhone 4s(7.1 模拟器) iPhone 4s(8.0 模拟器) iPhone 5(7.1 模拟器) iPhone 5(8.0 模拟器) iPhone 5s(7.1 模拟器) iPhone 5s(8.0 模拟器) iPhone 6(8.0 模拟器) iPhone 6 Plus(8.0 模拟器)

【讨论】:

【参考方案2】:

我遇到了同样的问题,我通过以下步骤解决了:

检查你的 UIAutomation 是否在设备中启用? -> 要检查它,请转到设置 -> 开发人员 -> 启用 UIAutomation

重启您的设备,然后再试一次。 它对我有用...... :)

【讨论】:

以上是关于WebKit 线程违规 - 从 UI 自动化中的辅助线程初始使用 WebKit的主要内容,如果未能解决你的问题,请参考以下文章

将唯一违规异常传播到 UI 的最佳实践

“调用线程无法访问此对象,因为不同的线程拥有它”从 WPF 中的不同线程更新 UI 控件时出现错误

JavaFX:从线程更新控制器类中的 UI 元素

核心数据多线程违规

将数据从UI线程传递到c#中的另一个线程

多线程违规核心数据