如何解决使用 selenium 在 microsoft edge 中自动保存文件
我正在为 microsoft edge 使用 selenium webdriver(4.0.0) 的测试版。我不知道如何将数据保存为打印窗口中的 pdf,该窗口在我单击主窗口中的按钮后打开
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<button @click="callChildMethod()">click to call addToNum method in child component from parent</button>
<child ref="child"></child>
<div>
解决方法
由于点击打印按钮时打开的窗口是一个os对话框,因此不能直接从selenium访问。我解决问题的方法是使用 P/Invoke。 使用 Visual Studio 的 spy++ 工具可以轻松找到窗口句柄及其标题。
接下来我定义了方法
[DllImport("user32.dll",EntryPoint = "FindWindow",SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly,string lpWindowName);
并称之为,
var saveHandle = FindWindowByCaption(IntPtr.Zero,"Save Print Output As");
下一步是使用手柄将窗口置于前台。为此,我使用了方法
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
最后一步是模拟键盘和鼠标操作。为此,我使用了库 InputSimulator。可以使用nuget包管理器下载
var ins = new InputSimulator();
ins.Keyboard.TextEntry($"ebrc{irandom.NextDouble()}");
Thread.Sleep(2000);
ins.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.TAB);
ins.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.TAB);
ins.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.RETURN);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。