Selenium webdriver 如何使用Selenium Webdriver在不单击上载按钮(上载按钮不以<;input>;标记开头)的情况下上载文件。?

Selenium webdriver 如何使用Selenium Webdriver在不单击上载按钮(上载按钮不以<;input>;标记开头)的情况下上载文件。?,selenium-webdriver,bamboo,Selenium Webdriver,Bamboo,在运行Bambol(CI)时,我的脚本失败,因为所有“上传文件链接”都不是以输入标记开始的。我使用自动上传的文件,这是良好的本地工作,当我试图通过竹远程机器上运行它是失败的 所以我想从后端上传文件,我不想点击上传按钮 Sendkeys()已尝试,但在此场景中没有帮助 那你为什么不能先试一下呢。。您的网页是否有定位文件的浏览按钮?如果是,将元素传递给locatorUpload para,并将upload button元素传递给locatorButton public void UploadFile

在运行Bambol(CI)时,我的脚本失败,因为所有“上传文件链接”都不是以输入标记开始的。我使用自动上传的文件,这是良好的本地工作,当我试图通过竹远程机器上运行它是失败的

所以我想从后端上传文件,我不想点击上传按钮

Sendkeys()已尝试,但在此场景中没有帮助


那你为什么不能先试一下呢。。您的网页是否有定位文件的浏览按钮?如果是,将元素传递给locatorUpload para,并将upload button元素传递给locatorButton

public void UploadFile(By locatorUpload, By locatorButton, String filePath){

        driver.findElement(locatorUpload).sendKeys(filePath);
        waitForElementClickable(driver, locatorButton, 4);
        driver.findElement(locatorButton).click();

    }

public void waitForElementClickable(WebDriver driver, By locator, Integer timeoutInSeconds){
    WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
    wait.until(ExpectedConditions.elementToBeClickable(locator));
}

通常在这种情况下,您需要执行3个步骤:

  • 使输入[type=file]元素可见使用javascript
  • 找到此输入并使用发送密钥(机器上的路径到文件)
  • 使用javascript触发上传