Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 上载文件Selenium UI测试不适用于Dynamics 365门户_C#_Selenium_Selenium Webdriver_Selenium Chromedriver_Dynamics 365 - Fatal编程技术网

C# 上载文件Selenium UI测试不适用于Dynamics 365门户

C# 上载文件Selenium UI测试不适用于Dynamics 365门户,c#,selenium,selenium-webdriver,selenium-chromedriver,dynamics-365,C#,Selenium,Selenium Webdriver,Selenium Chromedriver,Dynamics 365,我的一个在Dynamics 365门户上运行的Selenium UI测试有问题。测试非常简单: 它登录到门户网站 导航到某个页面 使用SendKeys从特定位置获取文件 点击上传按钮 当我运行此UI测试时,我收到一条消息,说明“请仅上载csv文件”。当用户试图上载不同的文件类型时,这是正确的行为。但是,在这种情况下,文件扩展名是正确的,应该成功上载。如果我手动进入门户并自己上传同一个文件,它会毫无错误地上传 有没有人在D365门户网站上遇到过类似的问题?或任何其他类似的门户/网站 下面是我点击上

我的一个在Dynamics 365门户上运行的Selenium UI测试有问题。测试非常简单:

  • 它登录到门户网站
  • 导航到某个页面
  • 使用
    SendKeys
    从特定位置获取文件
  • 点击上传按钮
  • 当我运行此UI测试时,我收到一条消息,说明“请仅上载csv文件”。当用户试图上载不同的文件类型时,这是正确的行为。但是,在这种情况下,文件扩展名是正确的,应该成功上载。如果我手动进入门户并自己上传同一个文件,它会毫无错误地上传

    有没有人在D365门户网站上遇到过类似的问题?或任何其他类似的门户/网站

    下面是我点击上传按钮的代码。我使用了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:\Users\Shea.Leonard\Desktop\Upload20190625161051.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:\Users\adm_shea.leonard\Desktop\Upload20190625161051.csv");
    Thread.Sleep(1000);
    autoIt.Send("{ENTER}");
    
    然而,我仍然得到同样的错误

    基于此,它应该成功上传一个文件。不确定这是否是Selenium WebDriver和D365门户插件的问题。我们收到的错误消息“请仅上载csv文件”在Dynamics portal的Web表单配置中指定

    同一个文件是有效的,因为如前所述,我已经能够通过门户成功地手动上传它


    任何帮助都将不胜感激。

    我要做的第一件事是将
    .csv
    扩展名从
    SendKeys.SendWait(@“C:\Users\Shea.Leonard\Desktop\Upload20190625161051.csv”)代码行

    因此,请像这样尝试:

    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:\Users\Shea.Leonard\Desktop\Upload20190625161051.csv");
    
    
    SendKeys.SendWait(@“C:\Users\Shea.Leonard\Desktop\Upload20190625161051”)

    这只是一个健全的测试,以确保.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:\Users\Shea.Leonard\Desktop\Upload20190625161051.csv");
    
    
    如果这不起作用,我会尝试手动导航到此页面并右键单击要向其发送密钥的文件输入元素

    使用devtools,您可以手动将文本输入到文件输入元素中(就像WebDriver那样),并且可以查看是否存在相同的问题。一旦您进行了比较,您就会更好地了解问题是与WebDriver有关,还是与网页本身有关

    最后,我还将尝试使用不同的文件路径字符串格式。例如,您使用
    (@“C:\Users\Shea.Leonard\Desktop\Upload20190625161051.csv”)
    。我还会尝试使用
    (“C:\\Users\\Shea.Leonard\\Desktop\\Upload20190625161051.csv”)
    作为一个健全测试,以确保您提供的文件路径没有问题

    事实上,您收到了一条与.csv文件格式相关的错误消息,这让我相信您的做法是正确的。这里最可能的情况是,手动上载文件和自动上载文件会向UI发送不同的文本字符串。因此,尝试发送到文件输入的不同文本字符串可能会解决您的问题