我在 Dynamics 365 门户上运行的一个 Selenium UI 测试出现问题。测试非常简单:
- 它登录到门户
- 导航到特定页面
- 使用
SendKeys
从特定位置获取文件 - 点击上传按钮
当我运行此 UI 测试时,我收到一条消息,指出"请仅上传 csv 文件"。如果用户尝试上传其他文件类型,这是正确的行为。但是,在这种情况下,文件扩展名是正确的,应该成功上传。如果我手动进入门户并自己上传相同的文件,它会上传而不会出错。
是否有人在 D365 门户中遇到过类似的问题?或任何其他门户/网站?
以下是我单击上传按钮的代码。我使用过By XPath,Id,LinkText等,一切正常。
public static void BulkUploadBrowse()
{
try
{
//Click upload button
var browse = Driver.Instance.FindElement(By.CssSelector("#AttachFile"));
browse.Click();
Thread.Sleep(1000);
}
catch (Exception ex)
{
throw (ex);
}
}
以下是上传文件的逻辑:
public static void UploadFile()
{
// Method 1 : File Upload Using Send Keys
try
{
SendKeys.SendWait(@"C:UsersShea.LeonardDesktopUpload20190625161051.csv");
Thread.Sleep(1500);
SendKeys.SendWait(@"{ENTER}");
}
catch (Exception ex)
{
throw (ex);
}
}
我还尝试了另一种使用 AutoITX3 库的方法:
//Method 2 : File Upload Using Auto IT || Leaving this here incase method 1 stops working.
AutoItX3 autoIt = new AutoItX3();
autoIt.WinActivate("Open");
autoIt.Send(@"F:Usersadm_shea.leonardDesktopUpload20190625161051.csv");
Thread.Sleep(1000);
autoIt.Send("{ENTER}");
但是,我仍然收到相同的错误。
基于此,它应该成功上传文件。不确定这是否是Selenium WebDriver和D365门户附加组件的问题。我们收到的错误消息"请仅上传 csv 文件"在 Dynamics 门户的 Web 窗体配置中指定。
同一个文件是有效的,因为如前所述,我已经能够通过门户手动成功上传它。
任何帮助将不胜感激。
我要尝试的第一件事是将.csv
扩展从您的SendKeys.SendWait(@"C:UsersShea.LeonardDesktopUpload20190625161051.csv");
代码行中删除。
所以试试这样:
SendKeys.SendWait(@"C:UsersShea.LeonardDesktopUpload20190625161051");
这只是一个健全性测试,以确保.csv文件扩展名不会因任何原因而重复。
我会尝试的另一件事是运行一些 Javascript 来使您的文件上传输入元素可见,如下所示:
var fileInputElement = Driver.FindElement(By.CssSelector("#AttachFile"));
// display the file input so we can send keys
(IJavaScriptExecutor)_driver.ExecuteScript("arguments[0].style.display = 'block';", fileInputElement);
fileInputElement.SendKeys(@"C:UsersShea.LeonardDesktopUpload20190625161051.csv");
如果这不起作用,我会尝试手动导航到此页面并右键单击您要向其发送密钥的文件输入元素。
使用 devtools,您可以手动在文件输入元素中输入文本(就像 WebDriver 一样(,您可以查看那里是否发生相同的问题。进行该比较后,您将更好地了解问题是否与WebDriver或网页本身有关。
最后。。。。我还会尝试使用不同的文件路径字符串格式。例如,您使用(@"C:UsersShea.LeonardDesktopUpload20190625161051.csv")
.我还会尝试使用("C:\Users\Shea.Leonard\Desktop\Upload20190625161051.csv");
作为健全性测试,以确保您提供的文件路径没有问题。
您收到与文件.csv格式相关的错误消息的事实使我相信您在这方面走在正确的轨道上。这里最有可能的情况是手动上传文件并自动上传文件会向 UI 发送不同的文本字符串。因此,尝试使用发送到文件输入的不同文本字符串可能会解决您的问题。