在Phantomjs + selenium中启用cookie

时间:2015-05-06 09:09:37

标签: python cookies selenium-webdriver phantomjs

我想在我的armv7主板上登录amazons3(使用网址:&#39; https://console.aws.amazon.com/iam/home?#security_credential&#39;)。我使用了来自here的phantom2.0.1和selenium2.45.0。< / p>

我可以成功打开网站,但当我做“提交”时填写用户名和密码后,网站会跳转到错误页面,显示“请启用Cookie继续”。所以我想知道如何在selenium中为phantomjs启用cookie。在我的ubuntu12.04中使用合适版本的phantomjs,我可以成功

我的部分代码如下:

def __init__(self,username,password,login_url,width=1151,height=629):
    self.username = username
    self.password = password
    self.login_url = login_url
    dcap = dict(DesiredCapabilities.PHANTOMJS)  
    dcap["phantomjs.page.settings.userAgent"] = ( "Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) Phantomjs/2.0.1 Safari/534.34" )  
    self.driver = webdriver.PhantomJS(executable_path='/bin/phantomjs',desired_capabilities=dcap,service_args=['--ssl-protocol=any','--ignore-ssl-errors=true'])
    self.driver.set_window_size(width,height)

def _login_system(self):
    try:
        self.driver.get(self.login_url)
        print self.driver.page_source#I can success here
        WebDriverWait(self.driver, 30).until(lambda driver : self.driver.find_element_by_id("ap_email")).send_keys(self.username)
        WebDriverWait(self.driver, 30).until(lambda driver : self.driver.find_element_by_id("ap_password")).send_keys(self.password)
        WebDriverWait(self.driver, 30).until(lambda driver : self.driver.find_element_by_id("signInSubmit-input")).submit()#failed here and showing Please Enable Cookies to Continue

1 个答案:

答案 0 :(得分:5)

我找到了答案, 亚马逊似乎不接受“使用者”中的“幻影/(。*)”

失败:Mozilla / 5.0(Macintosh; Intel Mac OS X)AppleWebKit / 534.34(KHTML,如Gecko)Phantomjs / 2.0.1 Safari / 534.34

确定:Mozilla / 5.0(Macintosh; Intel Mac OS X 10.9; rv:36.0)Gecko / 20100101 Firefox / 36.0 WebKit

另外,我在useragent的末尾添加了“WebKit”,因为问题“未定义的不是对象”(https://github.com/detro/ghostdriver/issues/325

更重要的是,我遇到了“提高BadStatusLine(线路)”的问题(就像这里:enter link description here)。它可能是由于不匹配造成的 硒和幻影的版本,所以我改用phantomjs1.9.8(github中的piksel / phantomjs-raspberrypi)

对于编译问题,如果要在arm板上编译,最好使用swap来扩展RAM。