zoukankan      html  css  js  c++  java
  • Python+Selenium登录GitHub实例

    1、话不多说,直接上代码

     1 from selenium import webdriver  # 导入包
     2 import time
     3 driver = webdriver.Chrome()    #  指定浏览器
     4 driver.get("https://github.com/login")  #  指定网址
     5 driver.implicitly_wait(10)  # 等待
     6 #  定位到登录框输入用户名和密码
     7 driver.maximize_window()
     8 driver.find_element_by_xpath("//*[@id='login_field']").send_keys("用户名")
     9 driver.find_element_by_id("password").send_keys("密码")
    10 driver.find_element_by_xpath("//*[@value='Sign in']").click()
    11 time.sleep(3)
    12 #  点击右上角设置
    13 driver.find_element_by_css_selector('summary[class="Header-link"] span:nth-child(3)').click()
    14 #  driver.find_element_by_xpath("/html/body/div[1]/header/div[7]/details/summary").click()
    15 time.sleep(1)
    16 #  取值
    17 t = driver.find_element_by_css_selector('a[role="menuitem"] strong').text
    18 print("获取的账户名称是:{}".format(t))
    19 if t == "用户名":
    20     print("登录成功!")
    21 else:
    22     print("登录失败")
    23 #  退出登录
    24 #  driver.find_element_by_xpath("//form[@class='logout-form']/button").click()
    25 driver.find_element_by_css_selector(".dropdown-item.dropdown-signout").click()
    26 driver.quit()  #  退出

     2、增强代码可读性

     1 from selenium import webdriver
     2 import time
     3 def login(driver, username, password):
     4     '''登录github'''
     5     # 打开github首页
     6     driver.get("https://github.com/login")
     7     driver.implicitly_wait(10)
     8     driver.maximize_window()
     9     # 输入账号
    10     driver.find_element_by_xpath("//*[@id='login_field']").send_keys(username)
    11     # 输入密码
    12     driver.find_element_by_id("password").send_keys(password)
    13     driver.find_element_by_xpath("//*[@value='Sign in']").click()
    14 def logout(driver):
    15     '''退出github'''
    16     time.sleep(3)
    17     # 点右上角设置
    18     # driver.find_element_by_css_selector('summary[class="Header-link"] span:nth-child(3)').click()
    19     #driver.find_element_by_xpath("/html/body/div[1]/header/div[7]/details/summary").click()
    20     #time.sleep(1)
    21     # 点sign out
    22     driver.find_element_by_css_selector(".dropdown-item.dropdown-signout").click()
    23     #  driver.find_element_by_xpath("//form[@class='logout-form']/button").click()
    24     driver.quit()
    25 def check(driver):
    26     # 登录成功后,获取我的账户名称
    27     time.sleep(5)
    28     # 点右上角设置
    29     driver.find_element_by_xpath("/html/body/div[1]/header/div[7]/details/summary").click()
    30     # driver.find_element_by_css_selector('summary[class="Header-link"] span:nth-child(3)').click()
    31     # 获取账户名称
    32     time.sleep(1)
    33     t = driver.find_element_by_css_selector('a[role="menuitem"] strong').text
    34     print("获取到我的账户名称:%s" % t)
    35     if t == "用户名":
    36         print("登录成功!")
    37     else:
    38         print("登录失败!")
    39 if __name__ == "__main__":
    40     driver = webdriver.Chrome()
    41     # 调用登录
    42     login(driver, "用户名", "密码")
    43     # 检查是否登录成功
    44     check(driver)
    45     print("hello  jiale!")
    46     # 调用退出
    47     logout(driver)

      

  • 相关阅读:
    系统管理玩玩Windows Azure
    元素集合Bloom Filter
    软考之编译原理
    保存位图位图保存时上下颠倒?
    委托函数《重构》处理概括关系
    运营商网络物联网操作系统再思考Hello China操作系统的运营商网络协同机制
    文件文档文档的词频反向文档频率(TFIDF)计算
    sphinx全文索引开源
    [转载]c#委托事件简单例子
    [转载]在C#事件处理中灵活应用泛型
  • 原文地址:https://www.cnblogs.com/jialeliu/p/13692139.html
Copyright © 2011-2022 走看看