1

我搜索了 StackOverflow 并找不到以下问题的正确解决方案:

在内部 Sharepoint 站点中,单击 Upload,然后单击 Folders,我使用 SendKeys.SendWait 输入目录位置。然后将“Enter”作为 Send.Keys.SendWait 发送后,会出现一个对话框,我需要在其中单击 Upload 按钮,但该元素不可搜索,因为它似乎不是 DOM 的一部分。 在此处输入图像描述

这是代码片段:

SendKeys.SendWait(@"C:\Automation\Testing\");

SendKeys.SendWait("{Enter}");

SendKeys.SendWait("{Enter}");

IAlert alert = Driver.driver.SwitchTo().Alert();
alert.Accept();

我也尝试使用 JavaScript 来处理这个问题,但它没有帮助:

IJavaScriptExecutor jsX = (IJavaScriptExecutor)driver;

jsX.ExecuteScript("Object.defineProperty(BeforeUnloadEvent.prototype, 
'returnValue', { get:function(){}, set:function(){} });");

在另一个线程中,我注意到添加“--disable-notifications”和“--disable-popup-blocking”的建议,但这也不起作用。

这是代码:

ChromeOptions options = new ChromeOptions();
options.AddArguments("disable-infobars", "start-maximized", "no-sandbox", "--disable-notifications", "--disable-popup-blocking");
 Driver.driver = new ChromeDriver(options);

在对话框中找到并单击“上传”的最佳方法是什么?

4

1 回答 1

1

您可以尝试使用InputSimulator Nuget 来模拟键盘按钮事件。在Cancel选择截图按钮时,Tab按键可能会将焦点更改为Upload按钮,然后Enter键可能会按下Upload按钮:

var sim = new WindowsInput.InputSimulator();
System.Threading.Thread.Sleep(3000);
sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.TAB);
System.Threading.Thread.Sleep(300);
sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.RETURN);
于 2019-09-16T21:40:50.113 回答