簡體   English   中英

Selenium 2.53.5 httplib.BadStatusLine:''Python

[英]Selenium 2.53.5 httplib.BadStatusLine: '' Python

我試圖在Python 2.7中使用Selenium 2.53.5自動以在線形式注冊序列號。 該腳本已經運行了兩個多月,但是昨天我開始運行它時就開始收到錯誤消息:httplib.BadStatusLine:。 有沒有已知的解決辦法? 我讀過,前導/尾隨換行符可能會使url的檢索混亂,但我似乎無法確定問題所在。

碼:

import sys
import time

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

class SerialSet:
    def __init__(self, fileName, driverPath, user, password):
        self.fn = fileName
        self.failedSerials = []
        self.driver = webdriver.Chrome(driverPath)
        self.aloSuccess = False
        self.user = user
        self.password = password

    def parseSerialFile(self):
        with open(self.fn, 'r') as f:
            self.serials = [line.strip() for line in f]

    def setCountrySN(self, serial, driver):
        driver.find_element_by_xpath("//select/option[@value='USA']").click()
        driver.find_element_by_id("serialno").send_keys(serial)
        driver.find_element_by_xpath("//input[@value='Continue'][@type='button']").click()

    def submitState(self, driver):
        driver.find_element_by_xpath("//select/option[@value='CT']").click()
        driver.find_element_by_id("Continue1").click()

    def login(self, driver):
        driver.find_element_by_xpath("//*[@id='accountname']").send_keys(self.user)
        driver.find_element_by_xpath("//*[@id='accountpassword']").send_keys(self.password)
        driver.find_element_by_xpath("//*[@id='signInHyperLink']").click()

    def initiateSN(self, serial, driver):
        # select country and enter serialno
        driver.get("http://supportform.apple.com/201110/")
        self.setCountrySN(serial, driver)

        # enter login
        time.sleep(3)
        if driver.current_url == "http://supportform.apple.com/201110/":
            return False
        self.login(driver)

        # select state and continue
        time.sleep(3)
        self.submitState(driver)

        # final submit
        time.sleep(3)
        driver.find_element_by_id("finalContinue").click()
        return True

    def newSN(self, serial, driver):
        # select country and enter serialno
        driver.get("http://supportform.apple.com/201110/")
        self.setCountrySN(serial, driver)

        # select state and continue
        time.sleep(3)
        if driver.current_url == "http://supportform.apple.com/201110/":
            return False
        self.submitState(driver)

        # final submit
        time.sleep(3)
        driver.find_element_by_id("finalContinue").click()
        return True

    def automateSerials(self):
        for i in self.serials:
            if self.aloSuccess == False:
                if not self.initiateSN(i, self.driver):
                    self.failedSerials.append(i)
                    del i
                else:
                    self.aloSuccess = True
            else:
                if not self.newSN(i, self.driver):
                    self.failedSerials.append(i)
                    del i
        self.driver.quit()
        print(str(len(self.serials) - len(self.failedSerials)) + ":" + str(len(self.serials)))
def main():
    newSet = SerialSet(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
    newSet.parseSerialFile()
    newSet.automateSerials()

if __name__ == "__main__":
    main()

錯誤:

Traceback (most recent call last):
  File "automate.py", line 90, in <module>
    main()
  File "automate.py", line 85, in main
    newSet = SerialSet(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
  File "automate.py", line 11, in __init__
    self.driver = webdriver.Chrome(driverPath)
  File "/Library/Python/2.7/site-    packages/selenium/webdriver/chrome/webdriver.py", line 67, in __init__
    desired_capabilities=desired_capabilities)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 90, in __init__
self.start_session(desired_capabilities, browser_profile)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 177, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 234, in execute
response = self.command_executor.execute(driver_command, params)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 401, in execute
return self._request(command_info[0], url, body=data)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 432, in _request
    resp = self._conn.getresponse()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1132, in getresponse
response.begin()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 453, in begin
version, status, reason = self._read_status()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 417, in _read_status
raise BadStatusLine(line)
httplib.BadStatusLine: ''

確保您使用的是最新版本的chromedriver: http ://chromedriver.storage.googleapis.com/2.25/chromedriver_linux64.zip

我安裝了chromedriver 2.0並收到此錯誤,

當我升級到2.25時,它擺脫了這個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM