zoukankan      html  css  js  c++  java
  • selenium + phantomJS 常用方法总结

     0x01 初始化:

    dcap = dict(DesiredCapabilities.PHANTOMJS)  #一些属性的设置
    dcap["phantomjs.page.settings.loadImages"] = False #为了速度不加载图片信息,这个根据需要使用
     
    obj = webdriver.PhantomJS(desired_capabilities=dcap, service_args=['--ssl-protocol=any '])  #--ssl-protocol=any 可以处理https请求
    #phantomjs安装路径设置为环境变量,不需要指定executable_path,否则需要指定路径:
    self.obj = webdriver.PhantomJS(executable_path='C:Anaconda3envspython2phantomjs.exe',
    desired_capabilities=self.dcap,
    service_args=['--ssl-protocol=any '])
    obj.set_window_size(1920, 1080)   #设置页面尺寸
     
    obj.switch_to.frame(0)  #切换frame    (有时候在一个页面上找不到这个控件,可能因为是不在一个frame下)
     

    0x02 隐式等待implicitly_wait

    obj.implicitly_wait(30)  
    obj.set_page_load_timeout(30)
    obj.set_script_timeout(30)
     
    隐式等待只需要设置一次,影响范围是全局的,每次driver找不到元素时,最大的等待时间为这里设置的值,超时会抛出异常。
     
     

    0x03 显示等待WebDriverWait(driver,time).until(EC.method(特征)):

    使用方法如下所示:
    #EC:expected condition
    userName = WebDriverWait(self.obj, 30).until(
    EC.presence_of_element_located((By.ID, 'login-username'))
    )
     
    常用方法有:
    EC.presence_of_element_located(By.ID,'verification-code-field')  #通过元素ID名称查找
    EC.presence_of_element_located(By.XPATH,'//*[@id="verification-code-field"]') #通过xpath表达式查找
    EC.title_is('yahoo')  #判断页面title是否跳转
    EC.title_contains('yahoo ') #判断页面title是否包含某字符串
     
    xpath可以直接chrome浏览器F12,对控件右键copy xpath获取
     

    0x04 控件常用属性

    userName = obj.find_element_by_xpath('//*[@id="login-username"]')
    userName.send_keys('username***')
     
    nextStep =obj.find_element_by_xpath('//*[@id="login-signin"]')
    nextStop.click()
     
    tag = obj.find_element_by_xpath('//*[@id="j-dynamicMobile-code"]')
    tag.get_attribute('style')  #获取html标签中style属性的值display: none;  <div id = "j-dynamicMobile-code" style=display: none; ></div>
     
    code_click = obj.find_element_by_xpath( '//*[@id="j-msg-verifyCode"]')
    code_click.text    #获取html标签中的text值text123456  <div id = "j-msg-verifyCode" >text123456</div>

     0x05 页面常用属性

    obj.title #获取页面title
    obj.get_cookies() #获取cookies,list格式
    obj.save_screenshot('1.png')  #截屏
    obj.current_url  #当前页面url
    obj.execute_script(js) #执行js脚本
     
    其中get_cookies()获取的cookies格式如下:
    [{u'domain': u'****.com', u'name': u'YM.NEO_120471291574672572', u'expires': u'u5468u4e8c, 10 u56dbu6708 2018 01:24:35 GMT', u'value': u'width=400&height=300', u'expiry': 1523323475, u'path': u'/', u'httponly': False, u'secure': False},
    {u'domain': u'****.com', u'name': u'AO', u'expires': u'u5468u516d, 09 u4e00u6708 2038 21:35:44 GMT', u'value': u'u=1', u'expiry': 2146685744, u'path': u'/', u'httponly': False, u'secure': False},
    {u'domain': u'****.com', u'name': u'SSL', u'expires': u'u5468u56db, 10 u4e00u6708 2019 13:20:15 GMT', u'value': u'v=1&s=JRss2by53Dp_UyAgHAnKtQ7WbHyBKh2YVVPNqJTMZ47CbXzGGr3PFR.8LSZjSyfcRnuxeBpqhUlQAACFV4LD8A--&kv=0&ku=ca.60NUxQ6IC9KaLQ5hR1YPMAduovCmJxi0Q2VkWPntcZTYU1SkzPN7nOc1uSxAIaqd.6mkNItze8BTfcbK0PiRX9c21QXWzx7b_lrq6iVQsrwhkVKvavdeX.oZZmr9xL0ichLzj18.HdSCvu3zBAuukYUb.VnVWxpYXsUZiAfc-~A', u'expiry': 1547126415, u'path': u'/', u'httponly': True, u'secure': True},
    {u'domain': u'****.com', u'name': u'Y', u'expires': u'u5468u56db, 10 u4e00u6708 2019 13:20:15 GMT', u'value': u'v=1&n=6p3rcmrtjkpr7&l=woe7pfn55vx38s3n6ab8nxgwpwha7fwxgvfxbcpf/o&p=o2rvvcn00000000&r=11k&lg=en-US&intl=us', u'expiry': 1547126415, u'path': u'/', u'httponly': False, u'secure': False},
    {u'domain': u'****.com', u'name': u'PH', u'expires': u'u5468u56db, 10 u4e00u6708 2019 13:20:15 GMT', u'value': u'fn=NYKBW_gBAPLJS0KnfA--&l=en-US&i=us', u'expiry': 1547126415, u'path': u'/', u'httponly': False, u'secure': False},
    {u'domain': u'****.com', u'name': u'F', u'expires': u'u5468u56db, 10 u4e00u6708 2019 13:20:15 GMT', u'value': u'd=Lph4flc9vLx42LHbzw2xpg6w1hwE02jYICiygdAC8MqZdQ--', u'expiry': 1547126415, u'path': u'/', u'httponly': True, u'secure': False},
    {u'domain': u'****.com', u'name': u'T', u'expires': u'u5468u56db, 10 u4e00u6708 2019 13:20:15 GMT', u'value': u'z=2pWVaB299ZaBRjRRa42/gO4MzUxMQY2NTczMDY1TjYyMDMxMD&a=QAE&sk=DAAIpmMzwKlcVe&ks=EAAz5.zbUZKYh8EJPb3NzxJDw--~G&kt=EAA44rjxv3eEkIzNGQZb_woVw--~I&ku=FAACZjNX655IPazEVYcTxc3MzzP1A1xQOZaKRBCAs.e2rx.Hr6DJJMlxFQ5nFK.xn55VIs9Jg9kCH4Wu6lR8tH3j4iiKUoAcJNvqbOYaWkAOpIYOD5og0Q74ZwJTrVN3i8BxcXBEp.OSmDN9nZyzQ_j3Ryi5_SCc1Uu83mz25_Ys9U-~A&d=bnMBeWFob28BZwE0QjJXVEFJRDZUV1c0Wk9GNkE3S1ZQTUpESQFzbAFOREkyTmdFeE1qQTBOekV5T1RFMU56UTJOekkxTnpJLQFhAVFBRQFhYwFBQkpHbVZlYwFhbAF0b21va28xMjM0NTY3OAFzYwFkZXNrdG9wX3dlYgFmcwFZX05zbUF4YVZXcDIBenoBMnBXVmFCQTdF&af=JnRzPTE1MTU1NDcyNTQmcHM9UE8wTHBSV281dE9YT01tYUdsWXIwQS0t', u'expiry': 1547126415, u'path': u'/', u'httponly': True, u'secure': True},
    {u'domain': u'****.com', u'name': u'B', u'expires': u'u5468u56db, 10 u4e00u6708 2019 13:20:15 GMT', u'value': u'2phekgdd5aqij&b=4&d=q5ScCIJpYFT.w1RzSOBSzDA_xpI-&s=c2&i=fbvNBhmwO6muMVqEznua', u'expiry': 1547126415, u'path': u'/', u'httponly': False, u'secure': False}
    ]
     
    转换成dict格式的方法:
    1         cookie_list =obj.get_cookies()
    2         print cookie_list
    3         cookie_dict = {}
    4         for cookie in cookie_list:
    5             cookie_dict[cookie['name']] = cookie['value']
    6         return cookie_dict
    7  
     
     
     
  • 相关阅读:
    超链接
    Image中的alt
    预格式
    json字符串转json对象,json对象转换成java对象
    google-gson 解析json
    java HTTP请求工具
    JS文件中获取contextPath的方法
    eclipse中安装freemarker插件及ftl使用freemarker编辑器
    MyBatis 传入参数之parameterType
    typeAliases别名
  • 原文地址:https://www.cnblogs.com/taurusfy/p/8287731.html
Copyright © 2011-2022 走看看