python webdriver os窗口

时间:2013-03-12 09:43:57

标签: python selenium-webdriver

我需要使用Python和Selenium上传文件。当我单击上传HTML元素时,将打开“文件上载”窗口,并且click()方法不会返回,因为它等待完全加载页面。因此我无法继续使用pywinauto代码来控制窗口。

第一种方法点击HTML元素(img)上传新文件:

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

,第二种方法是使用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方法返回并能够运行上传方法?

1 个答案:

答案 0 :(得分:0)

解决它。有一个iframe处理上传但被隐藏,并没有在第一时间看到它。 iframe包含一个也隐藏的类型文件的输入。要解决这个问题,请使用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'\\\\'作为路径分隔符。