zoukankan      html  css  js  c++  java
  • selenium笔记2017

     1,from time import sleep(先引入关键词)

     sleep(5)       (就可以使用这个命令了)       

    可以停止页面5

    1-1.

    等待页面元素出现的时间(即没出现时,等待元素出现)

    在头部加上:

    driver=webdriver.Firefox()

    driver.implicitly_wait (10)#显式等待

    2,定位的语法:

    driver.find_element_by_id('kw')

    3, A=driver.find_element_by_id('kw'),get_attribute('属性')==”值”

    验证元素的属性。

    返回ture flase

    if driver.find_element_by_id('kw').get_attribute('autocomplete') == 'off':

        print "TURE ,百度按钮找到了 "

    else:

        print  "no"

    后记:

    getAttribute()方法无法读到class属性的解决方法   getAttribute(”className”)

    4,定位P标签 只有文字的方法

    //div[@class=’suggert’]/p[contatiotainstext(),‘八达岭长城’)]

    5,指定一个浏览器或驱动

    driver= webdriver.Firefox(executable_path="C:Program Files (x86)Mozilla Firefoxfirefox.exe")

    dr=webdriver.Chrome(executable_path = '/Library/Python/2.7/chromedriver')

    6,显示元素的出现等待: (pdf 4.7)

    from selenium import webdriver

    from selenium.webdriver.support.ui  import WebDriverWait

    driver = webdriver.Firefox()

    driver.get("http://www.baidu.com")

    input_=driver.find_element_by_id("kw")

    element = WebDriverWait(driver,5,0.5).until(

    lambda driver :input_.is_displayed())

    print element

    4.9 iframe的切换

    dr.switch_to_frame('iframeUploadMaterialImage') #可自动识别ID OR name

    dr.switch_to_default_content()#切回来

    4.10 多窗口的切换

    7,验证并且不会中止下面代码的执行:

    #coding=utf-8

    from selenium import webdriver

    dr= webdriver.Firefox()

    dr.get('http://www.baidu.com')

    try:
     dr.find_element_by_id('1kw').send_keys('selenium')

        dr.find_element_by_id('su').click()
    except :
        print "oh no"   #上面有异常打印这个

    exit() #加入这个的话就直接退出程序,不执行下面的用例

    else :
        print "oh no"   #上面正常打印这个


    #找不到按钮也会继续执行下面的动作不会中断

    dr.quit()

    抛出错误就停止可以用assert(看python笔记本第17条)

    7-1验证断言写法

    B=3

    C=3

    try:

    A=B+C

    assert(A==6),"错误信息"

    except AssertionError,msg:

    print msg

    else:

    print "PASS"

    下面是简写:

    try:

    A=B+C

    assert(A==6)

    except :

    print “错误信息”

    else:

    print "PASS"

    8.参数化的方法 5.3.2

    读取text文件并做分隔的,如:账号密码的登录

    9.一个 python获取当前时间 数据格式化的例子:

    例子一:

    这个是正确主流的方法:

    #coding: utf-8  

    import datetime  #引入类

    # 获取当前的时间

    today = datetime.date.today()

    ab= 'My age is'+ str(today)

    #编写标题

    dr.find_element_by_name("title").send_keys(ab)

    #得出来的日期是字符串的类型,注意字符串格式化的方法%s

    例子二:

    只是把数据类型变字符串的,使用str()

    #coding: utf-8

    import datetime  #引入类

    # 获取当前的时间

    today = datetime.date.today()

    ab=today

    print ab                                          

    #编写标题

    dr.find_element_by_name("title").send_keys(str(ab))

    #使用python的字符串格式化,str()方式,把日期变成字符格式,send_keys正常。

    例子三:

    #coding: utf-8  

    import datetime  #引入类

    # 获取当前的时间

    today = datetime.date.today()

    ab= 'My age is %s' % today

    #编写标题

    dr.find_element_by_name("title").send_keys(ab)

    #得出来的日期是字符串的类型,注意字符串格式化的方法%s

    11,获取对象的属性 和获取标签集的方法

    inputs = driver.find_elements_by_tag_name('input')

    #然后循环遍历出data-node 为594434493的元素,单击勾选

    for input in inputs:

    if input.get_attribute('data-node') == '594434493':

    input.click()

    ......

    12,警告窗 4-11

    #接收弹窗driver.switch_to_alert().accept()

    13,当send_keys中文的时候报错,

    可以在中文前面加个u即可

    Send_keys(u”你好”)

    14, 4-3-1

    is_displayed() 设置该元素是否用户可见

    15,

    dr.quit()

    退出并关闭窗口的每一个相关的驱动程序,它还有个类似的表弟。

    dr.close()

    关闭当前窗口 ,用哪个看你的需求了。

    16,,清除文本,如果是一个文件输入框

    clear()

    17,模拟 下页 按键 pg DN (可以解决chrome不可以拖动浏览器的问题)

    dr.find_element_by_xpath("/html/body").send_keys(Keys.PAGE_DOWN)

    模拟 上页 按键

    dr.find_element_by_xpath("/html/body").send_keys(Keys.PAGE_UP)

    18.chrome 使用本来的浏览条滚动命令无法滚动 的解决方法

    参考网: (亲测OK)http://blog.csdn.net/sinat_21302587/article/details/54341020?locationNum=1&fps=1

     

    19,判断复选框有没有选中的API

    # 点击后,判断元素是否为选中状态
    r = driver.find_element_by_id("boy").is_selected()

    参考网站:http://www.cnblogs.com/yoyoketang/p/6128675.html

    20,获取标签的属性判断bool

    Dr.find_element_by_xpath(~).get_ attribute(“CLASS”)==”123”

    返回是bool值   ture or flase

     

    22,双层定位

     

    多用于下拉框的定位:

    先定位下拉框,再xpath定位下拉框下面的选项

    21,做数据分离的时候,从excel取出来的数据,无法放入send_keys API里面去 执行

    解决过程:

    excel取出来的数据 type类型是str的 无法send_keys。提示无法解码

    但是先把他转成unicode格式再放进去就可以send_keys

    后面发现,原来在函数那边做了utf-8格式转换,不转换的话可以直接调用

     

    22. page_source

    获取到页面源码(前端代码)

    用法: element.page_source

    参考: https://www.cnblogs.com/yoyoketang/p/6512604.html

  • 相关阅读:
    linux 下安装web开发环境
    js 字符串的操作
    css 弹出层-透明层
    Nginx服务器 之反向代理与负载均衡
    html5 响应式布局
    css 文本溢出显示省略号
    栈的运用(6)
    ctypes to load library in c/c++
    Expert Python programming
    Python type class metaclass
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/8647626.html
Copyright © 2011-2022 走看看