使用Python+Selenium+PhantomJS自动发tumblr

感觉tumblr和我八字不和,处处是坑,烦躁了一天。。。

主要遇到2个问题:

1.选择输入图片文字信息时,不能使用直接从浏览器开发模式复制出来的css__selector地址和xpath地址。

因为class属性有空格,css_selector的相对地址也不行,必须xpath的相对地址:

driver.find_element_by_xpath('//*[@class="editor editor-richtext"]').send_keys(alt)

2.本地上selenium+chrome调试成功后,vps上PhantomJS失败,不能输入图片描述文字,提示元素不可见。只能先在空白出点一下。

driver.find_element_by_xpath('//body').click()
def update_post(alt,src,tags):
    print('start')
    driver = webdriver.PhantomJS("/root/phantomjs")
    driver.get("http://www.tumblr.com/login")
    #登录
    driver.find_element_by_id("signup_determine_email").send_keys("账号")
    driver.find_element_by_css_selector(".signup_determine_btn").click()
    sleep(1)
    driver.find_element_by_id("signup_password").send_keys("密码")
    driver.find_element_by_css_selector(".signup_login_btn").click()
    #点击发布图片
    driver.find_element_by_xpath('//i[@class="icon_post_photo"]').click()
    sleep(1)
    #点击网络图片
    driver.find_element_by_xpath('//div[@class="dropzone-icon dropzone-add-url-icon"]').click()
    sleep(1)
    driver.find_element_by_css_selector('.editor-plaintext').send_keys(src)
    driver.find_element_by_css_selector('.editor-plaintext').send_keys(Keys.ENTER)
    sleep(3)
    #发送文字
    driver.find_element_by_xpath('//body').click()
    driver.find_element_by_xpath('//*[@class="editor editor-richtext"]').click()
    driver.find_element_by_xpath('//*[@class="editor editor-richtext"]').send_keys(alt)
    #发送标签
    for tag in tags:
        driver.find_element_by_xpath('//*[@aria-label="帖子标签"]').click()
        driver.find_element_by_xpath('//*[@aria-label="帖子标签"]').send_keys('#')
        driver.find_element_by_xpath('//*[@aria-label="帖子标签"]').send_keys(tag)
        driver.find_element_by_xpath('//*[@aria-label="帖子标签"]').send_keys(Keys.ENTER)
    #提交
    driver.find_element_by_xpath('//button[@class="button-area create_post_button"]').click()
    sleep(1)
    driver.quit()
    print('post updating success')

猜你喜欢

转载自blog.csdn.net/earth9/article/details/79983300