我试图编写一些测试脚本,涉及通过Chrome上传文件。我使用Selenium的RemoteWebDriver在Samsung Note 10设备上使用Chrome测试网络应用程序。
我设法编写脚本直到点击文件上传按钮,然后调出文件上传控件,询问我要上传哪种类型的文件。但是,由于这不是Web控件,因此我无法使用RemoteWebDriver与其进行交互。我试图创建一个新的AppiumDriver实例,但由于RemoteWebDriver的实例已经存在,我无法创建AppiumDriver的新实例。
无论如何我可以解决这个问题吗?我尝试将RemoteWebDriver转换为AppiumDriver(尽管觉得它不会起作用),但这是不可能的。
答案 0 :(得分: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' />
元素。
WebElement fileInput = driver.findElement(By.xpath("//input[@type='file']"));
fileInput.sendKeys("C:/file_to_upload.jpg");