1

我正在尝试编写一些涉及通过 Chrome 上传文件的测试脚本。我正在使用 Selenium 的 RemoteWebDriver,以便在三星 Note 10 设备上使用 Chrome 测试 Web 应用程序。

我已经设法将脚本编写到单击文件上传按钮的位置,这反过来又会调出文件上传控件,询问我要上传哪种类型的文件。但是,由于这不是 Web 控件,因此我无法使用 RemoteWebDriver 与之交互。我试图创建一个新的 AppiumDriver 实例,但由于 RemoteWebDriver 的一个实例已经存在,我无法创建一个新的 AppiumDriver 实例。

无论如何我可以解决这个问题吗?我尝试将 RemoteWebDriver 转换为 AppiumDriver(尽管感觉它不起作用),但这是不可能的。

4

1 回答 1

0

您可以使用 AndroidDriver 初始化而不是 RemoteWebDriver 来开始测试。

原因在于它的实现:

AndroidDriver extends AppiumDriver extends DefaultGenericMobileDriver extends RemoteWebDriver

所以,你会有类似的东西:

WebDriver driver = new AndroidDriver(new URL(YOUR_REMOTE_MACHINE_HUB_URL), capabilities);

现在,您可以使用 AppiumDriver 方法。您可以使用 WebDriver 为此提供的内置技术上传文件。
它背后的主要思想是将文件的绝对路径直接发送到您通常单击以获取模式窗口的元素 - 即<input type='file' />element.

WebElement fileInput = driver.findElement(By.xpath("//input[@type='file']"));
fileInput.sendKeys("C:/file_to_upload.jpg");
于 2015-12-29T13:08:42.263 回答