感觉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')