Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/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中使用Windows上载对话框处理文件上载_C#_Silverlight_Selenium Webdriver - Fatal编程技术网

C# 如何在Selenium中使用Windows上载对话框处理文件上载

C# 如何在Selenium中使用Windows上载对话框处理文件上载,c#,silverlight,selenium-webdriver,C#,Silverlight,Selenium Webdriver,我正在尝试使用Selenium(C#)上传附件 在检查站点的DOM时,我注意到附加文件的链接使用了对象标记。 以下是HTML摘录: <object id="ctl00_mainContent_rauFilessilverlight03" class="ruObject" height="22px" type="application/x-silverlight-2" data="data:application/x-silverlight-2," style="width: 100%;"&

我正在尝试使用Selenium(C#)上传附件

在检查站点的DOM时,我注意到附加文件的链接使用了
对象标记
。 以下是HTML摘录:

<object id="ctl00_mainContent_rauFilessilverlight03" class="ruObject" height="22px" type="application/x-silverlight-2" data="data:application/x-silverlight-2," style="width: 100%;"> 
 <param value="/App/somelongjunkyparameters" name="source"/> 
 <param value="true" name="windowless"/> <param value="transparent" name="background"/> 
 <param value="some number" name="minRuntimeVersion"/> 
 <param value="PostData=anotherlongjunkyparameters,SilverlightRowId=ctl00_mainContent_rauFilessilverlight03,AsyncUploadId=ctl00_mainContent_rauFiles,MultipleSelection=Disabled,AllowedFileExtensions=,ServiceHandlerUrl=/App/Telerik.Web.UI.WebResource type=rau,MaxFileSize=0" name="InitParams"/> 
 <param value="true" name="autoUpgrade"/> 
</object>
Selenium能够找到该对象,但是,我是否应该切换到Windows上载对话框? 希望能听到在这方面有经验的任何人


谢谢

开发该网站的人正在使用非标准机制上传文件。查看您提供的HTML,它看起来像某种Silverlight控件。当页面使用标准HTML上传机制(即
元素)时,Selenium WebDriver可以正确处理用于上传文件的文件选择对话框,但它不希望使用非标准上传机制。您需要找到一种在Selenium之外处理该对话框的方法。

开发该网站的人正在使用非标准机制上传文件。查看您提供的HTML,它看起来像某种Silverlight控件。当页面使用标准HTML上传机制(即
元素)时,Selenium WebDriver可以正确处理用于上传文件的文件选择对话框,但它不希望使用非标准上传机制。您需要找到一种在Selenium之外处理对话框的方法。

我在下载/上载文件时遇到了与Windows对话框对话的问题。我的解决方案是利用user32.dll getForeGroundIndow()。然后根据标题文本(仍然使用user32.dll)创建一些等待方法,以使对话框消失。然后,最终创建了一个操作来启动InVoke,等待窗口弹出,然后继续使用send键。现在我面前没有代码示例,但是Google user32.dll Selenium和您将获得一些信息

我在下载/上载文件时遇到与Windows对话框对话的问题。我的解决方案是利用user32.dll getForeGroundIndow()。然后根据标题文本(仍然使用user32.dll)创建一些等待方法,以使对话框消失。然后,最终创建了一个操作来启动InVoke,等待窗口弹出,然后继续使用send键。现在我面前没有代码示例,但是Google user32.dll Selenium和您将获得一些信息

我明白了,我做的是:

 IWebElement fileAttachTA = driver.FindElement(By.XPath("//object[@class='ruObject']"));
     fileAttachTA.Click();

     //Switch into the windows upload dialog
     SendKeys.SendWait("^a");
     Thread.Sleep(1000);
     SendKeys.SendWait(file);
     Thread.Sleep(1000);
     SendKeys.SendWait(@"{Enter}");
     Thread.Sleep(1000);

我使用System.Windows.Forms获取SendKeys.SendWait以使其工作。谢谢大家

我明白了,我做的是:

 IWebElement fileAttachTA = driver.FindElement(By.XPath("//object[@class='ruObject']"));
     fileAttachTA.Click();

     //Switch into the windows upload dialog
     SendKeys.SendWait("^a");
     Thread.Sleep(1000);
     SendKeys.SendWait(file);
     Thread.Sleep(1000);
     SendKeys.SendWait(@"{Enter}");
     Thread.Sleep(1000);

我使用System.Windows.Forms获取SendKeys.SendWait以使其工作。谢谢大家

您尝试过的代码有什么问题??是否有任何异常或其他情况?它只是无法切换到Windows上载对话框您尝试的代码有什么问题??是否存在任何异常或其他情况??它无法切换到Windows上载对话框我试图添加fileAttachTA.SendKeys(filePath);但它本身不会进入Windows上传对话框。但这是我的观点。
fileAttachTA
中的变量不是
元素。它是一个
元素。所以不,
SendKeys
对它不起作用。这就是我回答的全部要点。我试图添加fileAttachTA.SendKeys(filePath);但它本身不会进入Windows上传对话框。但这是我的观点。
fileAttachTA
中的变量不是
元素。它是一个
元素。所以不,
SendKeys
对它不起作用。这就是我回答的全部要点。