簡體   English   中英

Selenium Web 驅動程序的文件上傳功能無法通過 sendkeys 工作

[英]File Upload functionality of Selenium web driver not working through sendkeys

重現步驟:-

去 :-

https://talentconnect.pge.com/sap/bc/webdynpro/sap/hrrcf_a_unreg_job_search?sap-client=810&sap-wd-configId=ZPERJ_A_UNREG_JOB_SEARCH#

用戶名:- softwaretesting805@gmail.com 密碼:- 1Selenium@

搜索並申請任何工作並轉到附件頁面,然后單擊添加按鈕。 我無法在這里通過 Selenium 上傳任何文件。

1) 我正在使用 sendkeys 來回答 docType 和 docName 問題。

2)瀏覽元素在表單中,所以我首先使用sendkeys發送文件路徑,然后在表單元素上調用提交函數。

3)之后我點擊上傳按鈕。

問題似乎在於處理瀏覽按鈕,在 chromedriver 中,如果我轉到瀏覽選項卡,手動瀏覽文件,然后通過代碼運行其余部分,則文件成功上傳。

我正在使用下面的代碼來瀏覽和上傳。

List<WebElement> attachButtons = driver.getDriver().findElements(By.xpath("//input[@type=\"file\"]"));
for (int i = 0; i < 5; i++)
{
    if (attachButtons != null && attachButtons.size() > 0 && attachButtons.get(0).isDisplayed())
    {
        attachButtons.get(0).sendKeys("/home/user/path/to/file");
        SeleniumUtils.pause(1 * 1000);
        List<WebElement> formElements = driver.getDriver().findElements(By.tagName("form"));
        if(formElements != null && formElements.size() > 0)
        {
            formElements.get(0).submit();
        }
        break;
    }
    SeleniumUtils.pause(3 * 1000);
}
List<WebElement> uploadButtons = driver.getDriver().findElements(By.xpath("//a[@ct=\"B\"]"));
if (uploadButtons != null && uploadButtons.size() > 0)
{
    WebElement uploadButton = null;
    for(WebElement button : uploadButtons)
    {
        if(button.isDisplayed() && button.getText().contains("Upload"))
        {
            uploadButton = button;
            break;
        }
    }
    if(uploadButton != null)
    {
        uploadButtons.get(0).click();
    }
}

任何幫助是極大的贊賞。

謝謝!

我遇到了類似的問題。 它已通過使用 getAbsolutePath 解決。 試試下面的代碼,看看它是否有幫助。

File file = new File("/home/user/path/to/file");
attachButtons.get(0).sendKeys(file.getAbsolutePath());

另一種方法是使用 java 腳本。 你可以使用 JavaScriptExecutor,如下:

String jsScript = "var input = document.getElementsByTagName('input')[0];"
        +"input.value='/home/user/path/to/file';";
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript(jsScript);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM