单击按钮无法正常工作

时间:2015-08-26 06:25:00

标签: python facebook parsing selenium selenium-webdriver

我试图制作一个小测试脚本,可以发布一些东西到我的测试脸书组。我认为最好的方法是使用Selenium webdriver,如果我不使用Graph API。

登录正常。然后我得到了小组(self.driver.get(group_url))。现在,我找到了一个textarea元素并在那里发送了我的文字 - 这有效(根据self.driver.save_screenshot..)。

现在,我要找一个提交/发布按钮。我认为它位置正确,因为我已经通过Chrome中的inspect element复制XPATH来测试它。

所以我做click()。一切似乎都很好,但没有新的帖子。

# -*- coding: utf-8 -*-
from selenium import webdriver
import mLib
from selenium.webdriver.common.keys import Keys
import time

GROUPS = ['https://www.facebook.com/groups/1467884653516334/']
TEST = 'TESTING TEXT'

class base():
    def __init__(self):
        self.driver = webdriver.PhantomJS()
        self.settings = {}
        self.user = None
        self.password = None
        self.logged = False
        self.groups = []
        self.set_settings()
        self.groups = self.get_groups()

    def get_post_button(self):
        print self.driver.find_elements_by_xpath("//*[contains(text(), 'Post')]")

    def get_groups(self):
        # if 'groups' in self.settings.keys():
        #     groups = self.settings['groups'].split('*')
        # return groups if groups is not None else []
        return GROUPS

    def set_settings(self):
        with open('settings.txt') as f:
            for line in f:
                splitted = line.split('::')
                self.settings[splitted[0]]=splitted[1]

    def login(self,username,password):
        self.driver.get('http://www.facebook.com')
        user_form = self.driver.find_element_by_id('email')
        user_form.send_keys(username)
        pass_form = self.driver.find_element_by_id('pass')
        pass_form.send_keys(password)
        pass_form.send_keys(Keys.RETURN)
        time.sleep(5)
        if 'You must log in to continue' in self.driver.page_source:
            self.login()
        self.logged = True

    def send_post(self,text,group):
        assert self.logged == True
        self.driver.get(group)
        mLib.printToFile('source.txt',self.driver.page_source.encode('utf-8'))
        inner_wraps = self.driver.find_elements_by_css_selector('div.innerWrap')
        for iw in inner_wraps:
            try:
                text_field = iw.find_element_by_css_selector('textarea')
                text_field.send_keys(text)
                self.driver.save_screenshot('screen.png')

            except:
                continue

        button = self.driver.find_element_by_xpath('//*[@id="u_0_1w"]/div/div[5]/div/ul/li[2]/button')
        print button.get_attribute('outerHTML').encode('utf-8')
        webdriver.ActionChains(self.driver).move_to_element(button).click(button).perform()    

bs = base()

bs.login('email@gmail.com','password')
bs.send_post(TEST,GROUPS[0])
print 'OK'
bs.driver.quit()

为什么会这样?你有什么建议吗?

0 个答案:

没有答案