测试是上传一个文件,但问题是该元素被隐藏了。我使用 JavaScript 使元素可见(请参阅下面的代码)。当我在本地计算机上执行该代码时,该代码可以完美运行。但是当我将脚本集成到 jenkins 管道中并且现在在 selenium 网格中使用 chrome 执行它时,它导致了错误。 “不是绝对路径”。 注意:这不是文件位置的问题,因为我们发送的是字符串。该错误指向该元素。
// Hidden Upload File TextBox
public static void uploadFileDropZoneJS(String file) {
WebElement elem = Browser.driver.findElement(By.xpath("//input[@type='file']"));
String js = "$(\"input[type='file']\").appendTo('.bulk-uploader');$(\"input[type='file']\").removeClass('dz-hidden-input');$(\"input[type='file']\").css({'visibility':'visible','z-index':'100','position':'relative','width':'300px','height':'20px'});";
((JavascriptExecutor) Browser.driver).executeScript(js, elem);
elem.sendKeys(file);
}
最佳答案
你能把错误贴出来吗?我们遇到了类似的问题,我们的测试在 Windows 机器上本地运行得很好,但是当测试通过 Linux VM 上的 Jenkins 运行时,文件的路径当然会更改为相对于 Jenkins 工作区。进行一些小调整来查找相对于我们工作区的文件,一切都很好。
关于javascript - Selenium - 使用 javascript 启用元素在 Jenkins 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217716/