简体   繁体   English

Selenium / Python - 在 window 中上传文件

[英]Selenium / Python - Upload a file in window

I want to upload a photo to Instagram, but send_keys() does nothing.我想将照片上传到 Instagram,但 send_keys() 什么也没做。

username = driver.find_element_by_name('username')
username.send_keys(user[0])
password = driver.find_element_by_name('password')
password.send_keys(user[1])
submit = driver.find_element_by_tag_name('form')
submit.submit()
sleep(5)
driver.get('https://www.instagram.com/')
sleep(7)
elem = driver.find_element_by_xpath('/html/body/div[4]/div/div/div/div[3]/button[2]').click()
elem = driver.find_element_by_xpath('//*[@id="react-root"]/section/nav[2]/div/div/div[2]/div/div/div[3]')
elem.click()
elem.send_keys("C:\\Users\\chainsaw\\my-awesome-meme.jpeg")
sleep(5)

Window just pops up, but then nothing happens. Window 只是弹出,然后什么都没有发生。 Thank you.谢谢你。

Well, I just solved this yesterday in my own code.好吧,我昨天刚刚用自己的代码解决了这个问题。 You have to import pyautogui because the opened window is not part of the browser.您必须import pyautogui ,因为打开的 window 不是浏览器的一部分。

    image_name = "full path"
    pyautogui.press('f4')
    sleep(4)
    for i in range(0, numberOfchrachtersOfYourUser, 1):
        pyautogui.press('backspace')
        sleep(0.1)
    sleep(7)
    folder_name_parts = image_name.split('/')
    folder_name = ""
    for i in range(0, len(folder_name_parts) - 1, 1):
        if i > 0:
            folder_name += "/"
        folder_name += folder_name_parts[i]
    pyautogui.write(folder_name)
    sleep(5)
    pyautogui.press('enter')
    sleep(0.2)
    pyautogui.press('enter')
    sleep(0.2)
    pyautogui.press('enter')
    sleep(5)
    sh_image_name = image_name.split('/')[len(image_name.split('/')) - 1]
    pyautogui.write(sh_image_name)
    pause(2)
    pyautogui.press('enter')

now you should be back on your browser with your image.现在你应该带着你的图片回到你的浏览器了。 1 further tip: If you want to tag other profiles, you have to emulate a mobile divice. 1 进一步提示:如果要标记其他配置文件,则必须模拟移动设备。 In Chrome you do that:在 Chrome 中,您可以这样做:

    pyautogui.keyDown('ctrl')
    pyautogui.keyDown('shift')
    pyautogui.press('i')
    pause(1)
    pyautogui.press('m')
    pyautogui.keyUp('ctrl')
    pyautogui.keyUp('shift')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM