zoukankan      html  css  js  c++  java
  • python实例编写(4)--js,滚动条,cookie,验证码,获取特定属性的元素,实现原理

    一.调用js 

    执行方法:execute_script(script,*args)

    场景一:在页面上直接执行调用js

    场景二:在定位的某个元素上执行调用js

    如:掩藏文字(提示插件 tooltip设置淡入淡出)

    dr.execute_script('$("#tooltip").fadeOut();')

    隐藏按钮

    btn=dr.find_element_by_id("button")

    dr.execute_script('$(arguments[0]).fadeOut()',btn)

    二.滚动条(使用js设置scrollTop)

    #coding=utf-8
    from selenium import webdriver
    import time
        
    #访问百度
    driver=webdriver.Chrome()
    driver.get("http://www.baidu.com")
        
    #搜索
    driver.find_element_by_id("kw").send_keys("selenium")
    driver.find_element_by_id("su").click()
    time.sleep(3)
        
    #将页面滚动条拖到底部
    js="var q=document.documentElement.scrollTop=10000"
    driver.execute_script(js)
    time.sleep(3)
        
        
    #将滚动条移动到页面的顶部
    js="var q=document.documentElement.scrollTop=0"
    driver.execute_script(js)
    time.sleep(3)
        
    driver.quit()
    

    三.设置cookies

    Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。

    #coding =utf-8
    from selenium import webdriver
    
    dr=webdriver.Chrome()
    dr.get("http://www.youdao.com")
    
    #向cookie的name和value添加会话信息,使用add_cookie({键值对})
    
    dr.add_cookie({'name':'key-yuanyuan','value':'value-dongdong'})
    
    #遍历cookies中的name和value信息,以及添加的信息
    print "打印出所有的cookie"
    for cookie in dr.get_cookies():
        print "%s->%s"%(cookie['name'],cookie['value'])
    
    #删除cookie的两种方式
    #删除一个特定的cookie
    print "删除cookieName后"
    dr.delete_cookie("name")
    for cookie in dr.get_cookies():
        print "%s->%s"%(cookie['name'],cookie['value'])
        
    
    #删除所有的cookie
    print "删除所有cookie后"
    dr.delete_all_cookies()
    
    for cookie in dr.get_cookies():
        print "%s->%s"%(cookie['name'],cookie['value'])
        
    

    四.验证码

    解决方法:1.在项目代码中注释掉   2.设置万能码  3.通过验证码识别技术   4.记录cookie  (通过向浏览器添加cookie可以绕过登录的验证码)

    如:#设置cookies

    dr.add_cookie({'name':'username','value':'name'})
    dr.add_cookie({'name':'password','value':'admin'})

    五.获取特定属性的元素

    webdriver不支持直接用某个元素的特殊属性,只能以遍历循环找出 attribute符合要求的 ,如:

    inputs=dr.find_element_by_class_name("input")
    for input in inputs: 
        if input.get_attrbute("data-node")=='111':
            input.click() 

    六.webdriver工作原理介绍:

    1.webdriver通过脚本启动目标浏览器,并绑定到端口

    2.客户端通过命令执行器发送http请求给服务器remote  server的侦听端口 ,协议( webdriver wire protocal)

    3.remote  server依赖原生的浏览器执行command 

  • 相关阅读:
    JAVA多线程大总结篇
    JAVA多线程总结01
    Eclipse配置Tomcat
    jdbc注册驱动出现Loading class `com.mysql.jdbc.Driver'. This is deprecated的问题:
    windows10环境下eclipse连接mysql
    mysql忘记密码,如何修改
    c++笔记:虚函数必要但易忘的一些性质
    Mysql 4 —— select 进阶
    Mysql 3 —— 建表
    数据结构实验一:单链表就地翻转
  • 原文地址:https://www.cnblogs.com/alwayswyy/p/5044313.html
Copyright © 2011-2022 走看看