【问题标题】:Selenium twitter unable to take username and passwordSelenium twitter 无法获取用户名和密码
【发布时间】:2019-10-02 22:20:16
【问题描述】:

以下代码是我的程序的一部分,我试图在其中获取 excel 文件中给出的 screen_names 的关注者。早些时候我的代码运行良好,但现在每次在 chrome 上加载 twitter 页面后都会卡住。它不会在浏览器中输入用户名和密码。请指导我了解以下代码中可能出现的问题。

    *driver = webdriver.Chrome('C:/name/sport/chromedriver')
        driver.get("https://twitter.com/download?logged_out=1&lang=en")
        time.sleep(6) 
        driver.find_element_by_xpath("//*[@id='signin-link']").click()
        time.sleep(3)
        pagecount=driver.find_element_by_xpath("//*[@id='signin-email']").send_keys('mygmail')
        pagecount=driver.find_element_by_xpath("//*[@id='signin-password']").send_keys('mypassword')
        time.sleep(3)
        driver.find_element_by_xpath("//*[@id='signin-dropdown']/div[3]/form/input[1]").click()*


TypeError                                 Traceback (most recent call last)
<ipython-input-1-d3a52c563a6e> in <module>()
     18 driver.find_element_by_xpath("//*[@id='signin-link']").click()
     19 time.sleep(3)
---> 20 pagecount=driver.find_element_by_xpath("//*[@id='email']").send_keys('architgarg1515@gmail.com')
     21 pagecount=driver.find_element_by_xpath("//*[@id='Password']").send_keys('@Kaminibruno05')
     22 time.sleep(3)

C:\Users\khushi.tiwari\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element_by_xpath(self, xpath)
    256             driver.find_element_by_xpath('//div/td[1]')
    257         """
--> 258         return self.find_element(by=By.XPATH, value=xpath)
    259 
    260     def find_elements_by_xpath(self, xpath):

C:\Users\khushi.tiwari\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element(self, by, value)
    710                 value = '[name="%s"]' % value
    711         return self.execute(Command.FIND_ELEMENT,
--> 712                              {'using': by, 'value': value})['value']
    713 
    714     def find_elements(self, by=By.ID, value=None):

C:\Users\khushi.tiwari\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
    199         response = self.command_executor.execute(driver_command, params)
    200         if response:
--> 201             self.error_handler.check_response(response)
    202             response['value'] = self._unwrap_value(
    203                 response.get('value', None))

C:\Users\khushi.tiwari\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
    162 
    163         screen = None
--> 164         if 'screen' in value:
    165             screen = value['screen']
    166 

TypeError: argument of type 'NoneType' is not iterable

【问题讨论】:

    标签: python selenium twitter


    【解决方案1】:

    我查看https://twitter.com/download?logged_out=1&amp;lang=en 页面上的登录表单,我没有看到带有@id='signin-email'@id='signin-password' 的元素。相反,我将登录元素视为

    <input type="text" class="text-input email-input js-signin-email" name="session[username_or_email]" autocomplete="username" placeholder="Phone, email or username">
    

    密码为

    <input type="password" class="text-input" name="session[password]" placeholder="Password" autocomplete="current-password">
    

    所以这意味着你的 xpath 是错误的。试试

     pagecount=driver.find_element_by_xpath("//input[contains(@name,'username')]").send_keys('mygmail')
     pagecount=driver.find_element_by_xpath("//input[contains(@name,'password')]").send_keys('mypassword')
    

    在异常转储中,我相信您忘记替换您的真实用户名/密码,因此您可能需要更改密码。

    【讨论】:

    • 我通过查看html页面源代码解决了这个问题。但是非常感谢您的回答
    【解决方案2】:

    我明白我回答这个问题太晚了。另一个简单的解决方案是只使用类名中更相关的部分作为用户名和密码。

    示例:

         browser.find_element_by_class_name("js-username-field")
         browser.find_element_by_class_name("js-password-field")
    

    它对我有用..

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2013-01-05
      相关资源
      最近更新 更多