c# - 如何从桌面应用程序视图切换到 Web 视图并再次返回?
问题描述
我在我正在自动化的桌面应用程序中达到了某个点,我需要单击一个链接并继续在浏览器中实现自动化。该链接会自动转到 Internet Explorer。(有关如何将其复制并粘贴到 chrome 中的建议将不胜感激)。我需要知道如何从桌面切换到 web 视图、自动化 web 视图并返回到桌面视图。
到目前为止,这是我发现的最接近解决问题的方法。我是 c# 的新手,所以我知道我想要做什么的理论,只是不知道如何实现它。http://appium.io/docs/en/writing-running-appium/web/hybrid/。我已经将上下文记录到我的输出中。我还不能设置或重置它。
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Remote;
namespace UnitTestProject2
{
[TestClass]
public class GoldTrakPCTest
{
[TestMethod]
public void TestMethod1()
{
AppiumOptions options = new AppiumOptions();
options.AddAdditionalCapability("deviceName", "WindowsPC");
options.AddAdditionalCapability("platformName", "Windows");
options.AddAdditionalCapability("app", "XXXX -Path to desktop app");
WindowsDriver<WindowsElement> windowsDriver = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723/"), options);
Thread.Sleep(1500);
windowsDriver.FindElementByAccessibilityId("1006").SendKeys("Username");
windowsDriver.FindElementByAccessibilityId("1003").SendKeys("Password");
windowsDriver.FindElementByAccessibilityId("1001").SendKeys("354 - B - Mariner");
windowsDriver.FindElementByAccessibilityId("1").Click();
var myVar = windowsDriver.FindElementByAccessibilityId("59393");
Thread.Sleep(4200);
//Trace.WriteLine(windowsDriver.FindElementByName("WILLY WONKA"));
windowsDriver.FindElementByName("WILLY WONKA").Click();
Thread.Sleep(1000);
windowsDriver.FindElementByAccessibilityId("1310").Click();
Thread.Sleep(4000);
windowsDriver.FindElementByName("Documents").Click();
Thread.Sleep(4000);
windowsDriver.FindElementByAccessibilityId("1011").Click();
windowsDriver.FindElementByAccessibilityId("1011").Click();
windowsDriver.FindElementByName("Doc Set - WI Esign Documents").Click();
windowsDriver.FindElementByAccessibilityId("4750").Click();
Thread.Sleep(4000);
windowsDriver.FindElementByName("OK").Click();
windowsDriver.FindElementByAccessibilityId("2034").Click();
Thread.Sleep(4000);
string Context = windowsDriver.Context;
Trace.WriteLine(Context);
/*List<string> AllContexts = new List<string>();
foreach (var context in (windowsDriver.Contexts))
{
AllContexts.Add(context);
Trace.WriteLine(context);
}*/
//Trace.WriteLine(AllContexts, "Hello");
//options.AddAdditionalCapability("")
//windowsDriver.FindElementByName("WILLY WONKA").Click();
//windowsDriver.FindElementByName("Next").Click();
Thread.Sleep(6000);
//windowsDriver.Close();
}
}
}
我需要知道如何更改上下文以及是否可以在本地 Windows 桌面应用程序和浏览器之间切换以及如何执行此操作。
解决方案
有可能的。我有 2 个桌面应用程序和 1 个 Web 应用程序都在串联运行。但是,我有一个关于“链接自动转到 Internet Explorer 的问题。(有关如何将其复制并粘贴到 chrome 中的建议将不胜感激)。”
是因为 Internet Explorer 是 Windows 中的默认资源管理器吗?
在应用程序之间切换上下文。
一旦您单击打开 Web(IE 或 chrome)的 windowselement,您需要创建 Webdriver 实例(IE/chrome)并将其附加到浏览器进程
启动/附加到现有会话的测试初始化方法: How to use/attach an existing browser using Selenium?
推荐阅读
- java - 如何触发@LastModifiedDate
- css - 网格将项目放在列中,而不是行中
- c# - 如何在 C# 中将字符串中的所有内容捕获到单独的组中?
- jquery - JQuery 按类从特定子 DIV 中读取文本
- javascript - 如何使用正则表达式在特定字符之前选择除最后两个之外的所有多个空格?
- angularjs - 如何将`required`属性添加到angularjs指令
- ios - XCUITest 在页面上找不到元素
- javascript - 如何根据下拉选择提交显示的div
- autohotkey - 在 AutoHotKey 中使用 Right Alt 和 Right Ctrl 复制和粘贴
- python - 有什么方法可以远程运行 Tensorflow 模型?