zoukankan      html  css  js  c++  java
  • selenium3+python自动化5-学习find_elements总结

    一、前言

    之前学过元素的8中定位方式,都是find_element_by_定位方法,定位的元素返回都是一个值,定位的方法同样适用于find_elemnts,不同的是:这种定位方式返回的值是一个list列表,可以通过索引值的方式,输出具体的元素。书写方式find_elements_by_定位方法。

    二、练习内容及目标

    1.练习的内容

    百度搜索框中输入要搜索的值,本例子中要搜索的值是“python”,点击搜索后,会跳出很多链接,随机点击其中一个链接,进入链接页面。

    2.目标

    • 熟悉find_element定位方法
    • 掌握find_elements定位方法
    • 比较两种方式的不同
    • 随机函数的使用,比如random.randint(a,b)
    • 获取元素的属性值,get_attribute()方法

    3.处理方式

    • 定位搜索框,传要搜索的值
    • 点击搜索,或者直接submit(),带出很多链接
    • 寻找链接的规律
    • 根据规律,定位所有链接元素
    • 设置随机函数,将随机数作为链接元素的索引值,可以直接对定位的元素进行点击操作,这样到此为止,想用另一个办法就继续往下。
    • 链接中包含多个属性,但是只要其中的url,获取url
    • 点击url地址,或者直接用driver.get(url)方式打开链接

    三、实战

    1.定位搜索结果

     

    (1)搜索框中输入“python”,点击搜索后,查看页面元素,可以发现这些元素都有共同点

    (2)父元素都是<h3 class='t iCrNlJ OpdTNs'>,子标签都一样都是a

    (3)这些元素可以用css定位

    from selenium import webdriver
    from time import sleep
    driver=webdriver.Chrome()
    driver.get('https://www.baidu.com/')
    driver.implicitly_wait(10)
    #定位搜索框传值
    driver.find_element_by_id("kw").send_keys("python")
    #提交搜索值 driver.find_element_by_id(
    "kw").submit() sleep(1)
    #搜索结果定位 a
    =driver.find_elements_by_css_selector('h3.t>a') print(type(a),len(a))#查看元素的类型及从长度 driver.quit()

    2.随机函数

    从上面代码返回的结果可以看出a是一个列表,那么这么多元素中随机指定一个,便用到随机函数,random.randint(0,9)产生0~9的随机整数

    #随机函数
    import random
    b=random.randint(0,9)
    print(b)

    3.随机函数作为列表的索引值,对此元素进行操作

    1,2步分别产生一个列表和一个随机数,随机数作为列表的索引值,这样可以输出一个随机元素,可以直接点击此元素,也可以使用get_attribute()方法获取该元素的链接地址,根据截图可以看出获取href值就能得到url

    from selenium import webdriver
    from time import sleep
    import random
    driver=webdriver.Chrome()
    driver.get('https://www.baidu.com/')
    driver.implicitly_wait(10)
    driver.find_element_by_id("kw").send_keys("python")
    driver.find_element_by_id("kw").submit()
    #driver.find_element_by_id("su").click()#点击“百度一下”按钮
    sleep(1)
    a=driver.find_elements_by_css_selector('h3.t>a')
    #遍历所有元素的属性
    # for i in a:
    #     print(i.get_attribute('href'))#get_attribute()获取属性的值
    #     print(i.get_attribute('class'))
    #     print(i.get_attribute('text'))
    b=random.randint(0,9)
    a[b].click()#此方法是直接点击元素
    #url=a[b].get_attribute('href')
    #driver.get(url)#get()方法打开url,接口测试内容
    sleep(2)
    driver.quit()

    上面的代码中,使用submit()就是类似于回车键,用到get()方法,打开网址,属于接口测试内容,真正模拟手工操作,需用到click()

    参考博客:https://www.cnblogs.com/yoyoketang/p/6128599.html

  • 相关阅读:
    mysql 查询优化 ~ select count 知多少
    mongodb 案例 ~ 经典故障案例
    printk 驱动调试
    21天学通C++学习笔记(七):函数
    OPC UA
    MQTT
    分库分表
    水平、垂直权限问题(横向越权与纵向越权)
    数据库中的行转列和列转行
    面试知识点
  • 原文地址:https://www.cnblogs.com/xiaobeibi/p/12221339.html
Copyright © 2011-2022 走看看