python文件上传硒 [英] python file upload selenium

查看:76
本文介绍了python文件上传硒的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Selenium和Python将请求发送到网站.我现在正在上传文件,但似乎无法正常工作.

I use Selenium and Python to send requests to a website. I am making a file upload right now, but it seems that it is not working as I expect it to be.

以下是HTML的外观:

Here is how to HTML looks like:

<div id="uploaders" class="uploaders" data-image-urls="" data-image-ids="" data-image-positions="" data-image-checksums=""><div id="uploader-container-0" class="uploader-container small empty" data-uploader-index="0" data-numbering="1" style="position: relative;">
<div id="file-picker-0" class="uploader-box small" style="position: relative; z-index: 1;">
    <div class="thumb">
        <div class="uploader-overlay">
            <span class="photo-action edit-action">
                <span class="mp-Icon-circle"><span class="mp-Icon mp-svg-edit photo-action-icon"></span></span>
            </span>
            <span class="remove photo-action">
                <span class="mp-Icon-circle"><span class="mp-Icon mp-svg-delete photo-action-icon"></span></span>
            </span>
        </div>
    </div>
    <div class="content">
        <div class="mp-svg-button-camera camera-logo centered"></div>
        <div class="main-photo-subtext centered">
            Hoofdfoto.
        </div>
    </div>
</div>


<input type="hidden" name="images.urls" value="">
<input type="hidden" name="images.ids" value="">
<input type="hidden" name="images.checksums" value="">
<div id="html5_1bdvv7bg0ptl15m6gmu1d4v16l04_container" class="moxie-shim moxie-shim-html5" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; overflow: hidden; z-index: 0;">
<input id="html5_1bdvv7bg0ptl15m6gmu1d4v16l04" type="file" style="font-size: 999px; opacity: 0; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;" multiple="" accept="image/jpeg,.jpg,.jpeg,image/bmp,.bmp,image/png,.png"></div>

您可以在代码底部看到一个输入类型文件元素.但是没有形式.在站点上载文件的工作方式如下.您单击(+)号.然后我打开文件选择对话框,选择文件.然后出现另一个弹出窗口,要求您单击一个按钮以单击是否要接受某些内容.

As you can see in the bottom of the code there is a input type file element. But no form. The file upload on the site works as follows. You click on a (+) sign. Then I file choose dialog box opens, you choose the file. And then there comes another pop-up which asks with a button to click if you want accept something.

我的问题是如何上传文件.直到现在我都没有做到这一点.

My question is how can I upload a file. Till yet I have failed to do this.

我的代码:

upload_photo_field_xpath = ".//*[@id='uploader-container-0']/div/input"
upload_photo_element = WebDriverWait(driver, 10).until(
                                        lambda driver: driver.find_element_by_xpath(upload_photo_field_xpath))

image = os.path.join(os.getcwd(), 'images/' + 'img.jpg')
print(image)
upload_photo_element.send_keys(image)
upload_photo_element.submit()

关于如何解决此问题的任何想法?

Any thoughts on how to solve this problem?

谢谢.

推荐答案

没关系.我只是通过从浏览器切换来测试了这一点.我没有使用PhantomJS,而是使用Firefox进行测试.因此,我可以查看幕后实际发生的情况.通过查看浏览器,我了解到它需要等待几秒钟才能处理文件上传处理.

Never mind. I just tested this by switching from browser. Instead of using PhantomJS I used Firefox for testing purpose. So I can view what actually is happening behind the scenes. By viewing the browser I came to understand that it needed a couple of seconds to wait in order to handle the file upload handling.

代码:

'''Image Upload'''

upload_photo_element = driver.find_element_by_xpath(upload_photo_field_ID)
image = os.path.join(os.getcwd(), 'images/' + 'img.png')
upload_photo_element.send_keys(image)

# Depending on how long the image takes to load
time.sleep(5)

upload_photo_reject_button_element = WebDriverWait(driver, 10).until(
lambda driver: driver.find_element_by_id(upload_photo_reject_button_ID))

upload_photo_reject_button_element.click()

'''End image upload'''

此代码对我有用.

通过这种方式,不会弹出任何窗口.

In this way no window will pop-up.

但是我也注意到,这适用于Firefox浏览器,但不适用于PhantomJS.

But I noticed also that this works with the Firefox browser, but not with PhantomJS.

这篇关于python文件上传硒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆