0

Python と Selenium を使用してファイルをアップロードする必要があります。アップロード HTML 要素をクリックすると、「ファイルのアップロード」ウィンドウが開き、ページが完全に読み込まれるのを待つため、click() メソッドは返されません。したがって、pywinauto コードを使用してウィンドウを制御し続けることはできません。

最初のメソッドは、HTML 要素 (img) をクリックして新しいファイルをアップロードします。

def add_file(self):
    return self.selenium.find_element(By.ID, "add_file").click()

2番目の方法は、pywinautoを使用してファイルへのパスを入力し、[開く]をクリックすることです

def upload(self):
    from pywinauto import application
    app = application.Application()
    app.connect_(title_re = "File Upload")
    app.file_upload.TypeKeys("C:\\Path\\To\\FIle")
    app.file_upload.Open.Click()

add_file メソッドを強制的に返して、upload メソッドを実行できるようにするにはどうすればよいですか?

4

1 に答える 1

0

それを解決します。アップロードを処理する iframe がありましたが、非表示になっていて、そもそも表示されませんでした。iframe には、タイプ file も非表示の入力が含まれています。それを解決するには、javascript を使用して iframe を表示します。

selenium.execute_script("document.getElementById('iframe_id').style.display = 'block';")

次に、iframe に切り替えて、入力も表示できるようにします。

selenium.switch_to_frame(0)
selenium.execute_script("document.getElementById('input_field_id').type = 'visible';")

入力へのパスを送信するだけです。

selenium.find_element(By.ID, 'input_field_id').send_keys("path\\\\to\\\\file")

Windows の場合、パス区切りとして 4 つの '\\\\' を使用します。

于 2013-03-13T14:50:03.457 に答える