首页 > 解决方案 > 如何通过选择文件从 Mac 上传本地文件

问题描述

我想从我的 Mac 上传本地文件。这是来自 Robot Framework 的部分代码:

*** Settings ***
Library           Collections
Library           Selenium2Library

*** Variables ***
${file_path}    ${CURDIR}/file/IMG_0738.jpg  

*** Test Cases ***
Case
    Run Keywords    PreconditionLogin
    ...    AND    MyKeyword

*** Keywords ***
PreconditionLogin
    ${chrome_options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Call Method    ${chrome_options}    add_argument    --disable-extensions
    #Call Method    ${chrome_options}    add_argument    --headless
    Call Method    ${chrome_options}    add_argument    --disable-gpu
    Call Method    ${chrome_options}    add_argument    --no-sandbox
    Create Webdriver    Chrome    chrome_options=${chrome_options}
    Set Window Size    1024    768
    Go To    10.11.14.7
    Input Text    //*[@id='UserID']    aaa
    Input Text    //*[@id='Password']    123
    Press Key    //*[@id='Password']    \\13
MyKeyword
    Wait Until Element Is Visible   //*[@class='UploadInput-btn btn'][contains(text(),'UploadFile')]  1s
    Choose File  //*[@class='UploadInput-btn btn'][contains(text(),'UploadFile')]    ${file_path}

RF执行后,错误日志显示:

ElementNotInteractableException:消息:元素不可交互

我尝试过了

click element    //*[@class='UploadInput-btn btn'][contains(text(),'UploadFile')]

它正在工作并提示文件选择器窗口。

请参考页面截图

标签: robotframework

解决方案


您指定的定位器Choose file必须指向输入元素,而不是按钮。您不应单击该按钮,因为它将打开一个您的测试无法与之交互的对话框。


推荐阅读