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

  • 相关阅读:
    POJ 3126 Prime Path
    POJ 2429 GCD & LCM Inverse
    POJ 2395 Out of Hay
    【Codeforces 105D】 Bag of mice
    【POJ 3071】 Football
    【POJ 2096】 Collecting Bugs
    【CQOI 2009】 余数之和
    【Codeforces 258E】 Devu and Flowers
    【SDOI 2010】 古代猪文
    【BZOJ 2982】 combination
  • 原文地址:https://www.cnblogs.com/xiaobeibi/p/12221339.html
Copyright © 2011-2022 走看看