gpt4 book ai didi

java - 无需任何输入即可使用 selenide webdriver 上传文件

转载 作者:行者123 更新时间:2023-11-28 20:51:24 25 4
gpt4 key购买 nike

我正在尝试使用 java selenide 自动化测试上传文件。

我写测试的地方使用了上传框,附近没有任何输入值。

上传框是id='file'

我尝试使用:

$(By.cssSelector("[id='file']")).uploadFile(new File("myfilePackage" + File.separator + "picture.jpg"))

但这并没有帮助,因为没有用于文件上传的输入框。

然后我尝试使用:

WebElement elem = getWebDriver().findElement(By.cssSelector("[id='file']"));
String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';";

((JavascriptExecutor) getWebDriver()).executeScript(js, elem);
elem.sendKeys("wholePath\\picture.png");

使元素可见但出现未知错误:canno focus element\n ...

我得到了它,但这不是我想要的:

WebElement elem = getWebDriver().findElement(By.cssSelector("[id='file']"));

((RemoteWebElement) elem ).setFileDetector(new LocalFileDetector());

elem.sendKeys("C:FullPath\\picture.png");

有没有其他方法可以从这种上传中获取文件?我想从 Intellij 包上传它

最佳答案

WebDriver 仅在 inputtype=file 的情况下才允许使用 sendKeys 进行文件上传。由于 Selenide 只是一个 WebDriver 包装器,它使用相同的技术:https://github.com/codeborne/selenide/blob/8d545daa1286936e2041c1e8dd01801734c7fa39/src/main/java/com/codeborne/selenide/commands/UploadFile.java#L52

如果存在隐藏的输入,您可以尝试询问您的开发人员。或者如果是自定义 uploader ,您可以尝试其他几个选项:

  • SikuliX 等 OCR 工具;
  • 创建一个带有隐藏输入的后门(向开发人员询问),这会复制原始上传者的行为。

我会选择第二个选项,对于 FE-devs 这应该是一个简单的选项。他们可能只是自动删除生产构建中的相应后门。

关于java - 无需任何输入即可使用 selenide webdriver 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45160906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com