如何使用 XCTest 打开 Safari

Posted

技术标签:

【中文标题】如何使用 XCTest 打开 Safari【英文标题】:How to open safari using XCTest 【发布时间】:2016-11-28 12:30:21 【问题描述】:

我是 XCTest 的新手,我正在尝试使用 XCTest 在我的 iPhone 中使用 safari 应用程序,但无法执行任何操作,因此有办法实现这一目标

目前已尝试的代码:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.ggogle.com"]];

【问题讨论】:

【参考方案1】:

无法使用 XCTest 打开 safari。我尝试了以下方法,它给出了错误“未加载应用程序可访问性”。

在 Brigding-Header.h 中声明 XCUIApplication 私有方法接口:

@interface XCUIApplication (Private)
- (id)initPrivateWithPath:(NSString *)path bundleID:(NSString *)bundleID;
- (void)resolve;
@end

然后尝试打开safari:

let safari : XCUIApplication = XCUIApplication(privateWithPath: nil, bundleID: "com.apple.safari")
safari.launch();

【讨论】:

【参考方案2】:
NSURL *url = [NSURL URLWithString:@"http://www.***.com"];

if (![[UIApplication sharedApplication] openURL:url]) 
NSLog(@"%@%@",@"Failed to open url:",[url description]);

【讨论】:

试过了但没用 :(..,说是打开网址失败 以上代码仅适用于 XCTest 吗?还是我缺少一些东西,比如导入一些库或方法类型 youtube.com/watch?v=amSApTmxqrc .打开这个对你有帮助:) 我看过这个视频,它非常基础,没有显示任何关于打开 safari 应用程序和使用 XCTest 传递任何 url 的内容:( 您的网址正确吗?因为这段代码在我的项目中工作。【参考方案3】:

编写一个模拟[UIApplication openURL:] 的单元测试,并验证您传递给它的URL 是否正确。或者,如果您想要另一个方向,请编写一个单元测试,它将按调用顺序调用 UIApplicationDelegate 方法,模拟您的应用程序打开链接。这是您可以使用 XCUnit 所能达到的程度。并手动测试。

或试试这个

NSString *filePath = [[[NSBundle bundleForClass:[self class]] resourcePath] stringByAppendingPathComponent:@"YourFileName.json"];
XCTAssertNotNil(filePath);

【讨论】:

以上是关于如何使用 XCTest 打开 Safari的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XCTest 框架测试基于 REST 的原生 iOS 应用程序?

如何在 Objective C 中使用 Safari 打开表单?

如何使用 Xcode 5 从命令行运行 xctest?

如何使用 XCTest 使用 #available 语句覆盖所有功能分支

如何打开safari的调试模式

如何使用 xctest 滚动到特定位置