我试图使用ionic2/Angular2和typecript自动构建混合应用程序。
我使用C#编写代码。测试在BDD-specflow版本中:iOS:9.3.1 Xcode:7.3 Appium:1.4.13
将上下文切换到WEBVIEW后,我无法识别元素。
使用下面的代码调用IOSDriver
private IOSDriver<IOSElement> driver = null;
public IOSDriver<IOSElement> GetDriver(string platformVersion, string deviceName, string udid ,string appPath, string serverUri)
{
Capabilities iosCapabilities = new Capabilities();
DesiredCapabilities capabilities = iosCapabilities.Get(platformVersion, deviceName, udid, appPath);
driver = new IOSDriver<IOSElement>(new Uri(serverUri), capabilities, TimeSpan.FromSeconds(Constants.DriverWaitTime));
driver.Manage ().Timeouts ().ImplicitlyWait (TimeSpan.FromSeconds(Constants.ImplicitWaitTime));
var contextNames = driver.Contexts;
driver.Context = contextNames[1];
driver.FindElement(By.Xpath(locator)).Click();
}
将功能设置为
private DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.SetCapability ("appium-version", Constants.AppiumVersion);
capabilities.SetCapability ("platformName", Constants.PlatformName);
capabilities.SetCapability("autoWebView", "true");
capabilities.SetCapability("browserName", "iOS");
capabilities.SetCapability ("platformVersion", Constants.PlatformVersion);
capabilities.SetCapability("deviceName", deviceName);
capabilities.SetCapability("app", appPath);
capabilities.SetCapability("udid", udid);
我是否以正确的方式设置了功能?
我在做什么
启动应用程序后,在appium inspector中,我可以看到所有元素,并尝试单击文本框输入一些值
文本框的Xpath(我可以在appium inspector窗口中查看):“//UIAApplication1/UIAWindow1/UIAScrollView2/UIAWebView1/UIATextField1”
var contextNames=driver.Contexts
正在向我提供视图列表(在我的示例2视图中:NATIVE_APP,WEBVIEW_1)WEBVIEW上下文正在从1,2,3等动态更新。。
我一打电话
diver.Context=contextNames[1]; //setting context to WEBVIEW
刷新appium inspector,我无法查看/识别单个元素。一切都会消失。
切换到webview后无法查看/识别元素的原因。(注意:当我切换回driver.Context=“NATIVE_APP”时,每个元素都会在appium inspector中可见,但我仍然无法单击)
它将错误显示为“无法使用给定的搜索参数找到元素”
当我尝试使用appium inspector轻触或发送按键时,它也不允许我这样做(在使用inspector按钮手动启动tha应用程序之后)。这里的问题是什么。非常感谢您的帮助
Appium inspector的屏幕截图:
appium窗口中显示的错误消息:
以下是Appium的完整日志(错误)
无法识别WEBVIEW中的元素时的Appium日志链接
1) 在访问ios webview时--使用getcontextHandles我们可以实现
设置ContextNames=idriver.getContextHandles();
System.out.println(contextNames);
for (String contextName : contextNames) {
if (contextName.contains("NATIVE_APP")) {
Reporter.log("Reaching to Native App", true);
idriver.context(contextName);
sleepfor(1000);
idriver.findElementByName("Open").click();
Reporter.log("Clicking Open to naviagte to Native APP", true);
}
else{
Reporter.log("Not found", true);
}
}
2) 如果上面的上下文不起作用--请尝试运行iproxy在终端--ios_webkit_debug_proxy-c deviceID:27753-d deviceID--中运行它以获取设备id(instruments-s devices)
我想你必须在Appium建立UICatalog
>
在xcode中复制此链接:https://github.com/appium/ios-uicatalog
搜索已安装UICatalog.app的存储库用户/Library/Developer/Xcode/DerivedData/UICatalog bhmtevqhmgarbcgnqybxtbkqfvn/Build/Products/Debug iphonesimulator/UICatalog.app
尝试并使用以下代码切换上下文:
var contextNames = driver.GetContexts(); //correction to your code
driver.SetContext(contextNames[1]);
在使用appium时,您不一定需要以下功能:
capabilities.SetCapability("browserName", "iOS"); //can be removed from code as well
我猜您可能会尝试在运行/调试测试的同时使用Appium Inspector。在这种情况下,您可能无法同时使用这两个实例。请查看appium服务器日志以了解此方面的详细信息。
我正在android的clock应用程序上尝试一段appium自动化代码,但我的代码倾向于跳过滚动逻辑。我还尝试了findelement()和gettext()来标识该元素,但仍然没有成功。代码如下:
我无法使用Appium inspector识别元素。当我点击任何对象时,整个框架被选中。我无法唯一地识别每个元素。 我使用的是Appium 1.17.1-1设备:iPhone 6S iOS版本:12.2
自定义对象标识 Appium检查器无法找到其父元素的子元素。
在这一点上,我只是不知道该去哪里找。Appium网站似乎没有关于用于测试的命令的详细文档。
尝试运行Spring Boot应用程序时,我收到以下错误。 ***************************应用程序启动失败 描述: com中的字段存储库。Java新手。积垢。实例服务ProductService需要“com”类型的bean。Java新手。积垢。实例存储库。找不到ProductRepository“”。 注入点具有以下注释: @组织。springframework。豆。工厂注
我正在尝试在Android设备上启动我的Flutter应用程序,直到昨天我才能够,但是今天突然间我在启动它时收到此错误: 我试过删除. gradle文件夹,但不起作用。 编辑 这是我的~/。zshrc文件