我正在尝试使用Safari驱动程序上传文件。
这是我的代码:
DesiredCapabilities browserCapabillities = DesiredCapabilities.safari();
RemoteWebDriver driver = new SafariDriver(browserCapabillities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("myAppURL");
WebElement upload = driver.findElementByXPath("//input[@id='fileElementId']");
RemoteWebElement webElement = ((RemoteWebElement) upload);
LocalFileDetector detector = new LocalFileDetector();
webElement.setFileDetector(detector);
File f = detector.getLocalFile("myFilePath");
upload.sendKeys(f.getAbsolutePath()); // Generating exception:
// org.openqa.selenium.WebDriverException: Unknown command: uploadFile
driver.findElement(By.id("uploadButton")).click();
目前唯一对我有用的是AppleScript。感谢Using AppleScript to choose a file in Safari。但是使用Apple Script我必须让我的机器解锁。
我觉得LocalFileDetector是一个更好的解决方案,因为即使机器被锁定我也想运行我的测试。
我不确定以下是否有帮助?
driver.setFileDetector(new LocalFileDetector()); // I am getting
// org.openqa.selenium.WebDriverException: Setting the file detector only
// works on remote webdriver instances obtained via RemoteWebDriver
答案 0 :(得分:0)
更改
RemoteWebDriver driver = new SafariDriver(browserCapabillities);
到
RemoteWebDriver driver = new RemoteWebDriver(urlofhub,browserCapabillities);
请参阅this帖子以获取示例代码。