Selenium 如何在Safari(MAC)上的webdriver中上载文件
我正在尝试使用webdriver将文件上载到Safari(8.0.8)。有人能证实这是可能的吗?我正在搜索这个问题,但找不到明确的信息 我的测试环境: 我使用Win7在本地PC上运行测试,并在MAC机器上运行的Selenium Grid上启动浏览器(hub+节点在MAC Yosemite 10.10.5上运行) 首先,我尝试在MAC上上传直接文件。但它不起作用Selenium 如何在Safari(MAC)上的webdriver中上载文件,selenium,selenium-webdriver,safari,selenium-grid,safaridriver,Selenium,Selenium Webdriver,Safari,Selenium Grid,Safaridriver,我正在尝试使用webdriver将文件上载到Safari(8.0.8)。有人能证实这是可能的吗?我正在搜索这个问题,但找不到明确的信息 我的测试环境: 我使用Win7在本地PC上运行测试,并在MAC机器上运行的Selenium Grid上启动浏览器(hub+节点在MAC Yosemite 10.10.5上运行) 首先,我尝试在MAC上上传直接文件。但它不起作用 Browser.Driver.FindElement(By.Id("inputID")).SendKeys("/Users/admini
Browser.Driver.FindElement(By.Id("inputID")).SendKeys("/Users/administrator/Desktop/file.txt");
接下来,我尝试使用LocalFileDetetor,但它也不起作用:
driver.FileDetector = new LocalFileDetector();
Browser.Driver.FindElement(By.Id("inputID")).SendKeys("c:\\file.txt");
接下来,我尝试使用:WebDriverBackedSelenium:
ISelenium safari = new WebDriverBackedSelenium(webDriver, "http://systemname/");
safari.Start();
safari.AttachFile("xpath=//input[@id='inputID']", "e:\\file2.txt");
但它也不起作用。堆栈跟踪:
Selenium.SeleniumException:引发WebDriver异常
---->OpenQA.Selenium.InvalidElementStateException:元素必须是用户可编辑的,才能清除它。(警告:服务器未提供任何stacktrace信息)
命令持续时间或超时:7毫秒
构建信息:版本:“2.47.1”,修订版:“411b314”,时间:“2015-07-30 03:03:16”
系统信息:主机:'mac.domain.company.com',ip:'192.168.136.67',os.name:'mac os X',os.arch:'x86_64',os.version:'10.10.5',java.version:'1.8.0_51'
驱动程序信息:org.openqa.selenium.safari.SafariDriver
功能[{browserName=safari,takesScreenshot=true,javascriptEnabled=true,version=8.0.8,CSSSelectorEnabled=true,platform=MAC,secureSsl=true}]
会话ID:空
它不工作,因为它是Safari,或者grid/Safari/远程主机或文件路径有问题(带有/)?看起来不受支持。您可以使用OSAScript上载。请执行以下操作:
激活应用程序“Safari”
告诉应用程序“Safari”
告诉文件1
执行JavaScript“document.getElementsByTagName('label')[0]。单击()
延迟2
结束语
结束语
告诉应用程序“系统事件”
使用{command down,shift down}键击“G”
延迟2
击键“/Users/melamc/Downloads/upload.jpeg”
延迟2
击键返回
延迟2
击键返回
延迟2
结束通话
我希望这会对您有所帮助,请尝试让我知道我做了大量研究,以在mac上的safari浏览器中完成文件上载,幸运的是,我提出了以下解决方案 以下是与给定解决方案匹配的可能先决条件:
- 编程环境:c#
- 自动化环境:Selenium WebDriver,Selenium Grid
- 浏览器:Safari(12)
- 操作系统:MAC(高速)
- 集线器:Windows计算机,节点:Mac计算机
DesiredCapabilities dc = new DesiredCapabilities();
dc.SetCapability(CapabilityType.BrowserName, "safari");
dc.SetCapability(CapabilityType.Version, "12");
Driver = new RemoteWebDriver(new Uri("http://Node_Ip_Address:Port/wd/hub/"), dc);
下面的几行代码就是神奇的(这也适用于Chrome和Firefox)
在java中,上述的等价物是
Driver.setFileDetector(新的LocalFileDetector());
参考:
为java编写的代码行从我开始就没有经过测试,因为我目前正在使用c#
愉快的测试。这不是文件路径的问题,我认为safari不支持
IAllowsFileDetection AllowsDetection = Driver as IAllowsFileDetection;
if (AllowsDetection != null)
{
AllowsDetection.FileDetector = new LocalFileDetector();
}