如何自动单击仅在手动单击时有效的按钮?

问题描述 投票:0回答:1

我需要自动将文件上传到网站。我正在使用Selenium,并且可以浏览网站并从计算机上的驱动器中选择所需的文件输入。唯一无效的是单击“上传”按钮。

        driver = webdriver.Chrome(executable_path=r'P:/_Public/ScheduledTasks/SeleniumDriver/chromedriver.exe')
        driver.get("https://client.schwabct.com?sId=MTUyMTM")
        username = driver.find_element_by_name("userName")
        username.clear()
        username.send_keys(<userid>)
        password = driver.find_element_by_name("password")
        password.clear()
        password.send_keys(<pw>)
        driver.find_element_by_name("submitButton").click() 
        driver.get("https://client.schwabct.com/uploadData.action?currentApplication=87&currentRole=1&currentTab=16&currentModule=262&reset=Y")
        driver.find_element_by_name("submitButton").click()
        time.sleep(1)
        upload_options = Select(driver.find_element_by_id("slctValue"))
        upload_options.select_by_value("SECURITY_CHECKLIST")
        fileinput = driver.find_element_by_id('uploadData_uploadDataInfo_fileUpload')
        fileinput.send_keys(r"P:\_Public\Tamarac\Extracts\Upload_to_SCT\sct_upload_file.csv")
        d = driver.find_element_by_id("isIgnoreHeaderId").click()
        upload = driver.find_element_by_id("uploadButton").click() 

我可以在单击最后一个按钮之前运行所有代码,如果我随后手动单击按钮,它将上传文件。当我尝试自动执行最终按钮单击时,它给出了一个错误。因此,该按钮被单击,但是网站无法识别该文件。网站给出的错误文本是“找不到文件sct_upload_file.csv或文件为空。”

我已经尝试在最终按钮单击之前立即切换到pyautogui以单击按钮的图像。这也会单击按钮,但是即使通过pyautogui通过自然的鼠标移动将鼠标缓慢移到按钮上然后单击它,也会产生与使用Selenium单击按钮相同的错误。

HTML from the site

我也尝试过使用ActionChains单击按钮。同样,我可以单击它,但是出现相同的错误。

我已经尝试过选择元素并在下一行中使用“ upload.send_keys(Keys.RETURN)”。它单击按钮,但出现相同的错误。

我还尝试过通过发送TAB键和使用switch_to,然后发送一个RETURN键,将焦点移至该按钮,但是我无法真正将焦点移至该按钮。

单击最后一个按钮时,网页将变为“文件上传时等待”消息的类型。

Data is being processed screenshot

然后页面再次更改以显示错误消息。

Error message screenshot

URL不变。每页为“ https://client.schwabct.com/uploadData.action”。

python selenium file-upload automation pyautogui
1个回答
0
投票

我自己找出答案。问题中的代码实际上是在“ with”语句下缩进的,该语句打开了要上传的csv文件。将代码移出“ with”语句,关闭csv文件,使其可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.