1. #!/usr/bin/env python
    # -*- coding:utf-8 -*-
  2.  
  3. from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support.select import Select
  4.  
  5. import time,os
    import random
  6.  
  7. # about:addons 火狐浏览器安装组件,访问的地址
  8.  
  9. # <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
    #id
    keys="测试部落"
    delay=3
    url="https://www.baidu.com/"
    # url="https://mail.163.com/"
    driver=webdriver.Firefox()
  10.  
  11. driver.get(url)
    #按关键字搜索后,发现结果页面有共同元素<div class="result c-container "
    # <div class="result c-container " id="5" srcid="1599" tpl="se_com_default"
    # data-click="{&quot;rsv_bdr&quot;:&quot;0&quot;,&quot;p5&quot;:5}">
    # <h3 class="t">
    # <a data-click="{
    # 'F':'778317EA',
    # 'F1':'9D73F1E4',
    # 'F2':'4CA6DE6B',
    # 'F3':'54E5343F',
    # 'T':'1543897223',
    # 'y':'777DD28E'
    #
    # }"href="http://www.baidu.com/link?url=...." target="_blank"><em>selenium自动化</em>测试实战 - Trinity - CSDN博客</a>
    # </h3>
  12.  
  13. driver.find_element_by_id("kw").send_keys(keys)
  14.  
  15. #点击搜索按钮提交
    driver.find_element_by_id("su").click()
  16.  
  17. #获取符合条件的结果的超链接
    # href_list=driver.find_elements_by_css_selector("div[tpl='se_com_default']>h3>a")
    href_list=driver.find_elements_by_css_selector("div[srcid='1599']>h3>a")
  18.  
  19. #获取元素属性信息 网页标题 标签名 ID 网页尺寸 位置和尺寸 位置
    print(href_list[1].text)
    print(href_list[1].tag_name)
    print(href_list[1].id)
    print(href_list[1].size)
    print(href_list[1].rect)
    print(href_list[1].location)
  20.  
  21. #结果连接个数
    urllen=len(href_list)
    print(urllen)
  22.  
  23. #随机值
    rand=random.randint(0,urllen)
  24.  
  25. url=href_list[1].get_attribute('href')
    print(url)
    driver.get(url)
  26.  
  27. #随机点击查询出的超连接页面
    href_list[rand].click()
  28.  
  29. #iframe切换
    # <iframe name="" id="x-URS-iframe1543906125221.7507" scrolling="no"
    # style="width: 100%; height: 100%; border: medium none; background: rgba(0, 0, 0, 0) none repeat scroll 0% 0%;"
    # src="https://dl.reg.163.com/webzj/v1.0.1/pub/index_dl2_new.html?cd=https%3A%2F%2Fmimg.127.net%2Findex%2F163%2Fscripts%2F2017%2Fpc%2Fcss%2F&amp;" \
    # "cf=urs.7ac8b88e.css&amp;MGID=1543906125221.7507&amp;wdaId=&amp;pkid=CvViHzl&amp;product=mail163" frameborder="0"></iframe>
  30.  
  31. #最长30秒
    driver.implicitly_wait(2)
  32.  
  33. #默认可通过iframe的ID name定位 由于iframe的id后面有附加随机数,所以不成功,但大致处理方式就是这样
    driver.switch_to.frame("x-URS-iframe")
    driver.find_element_by_name("name").send_keys("test")
    driver.find_element_by_name("password").send_keys("123456")
  34.  
  35. #回到主页面上
    driver.switch_to.default_content()
  36.  
  37. #百度-设置-搜索页面-全部语言-每页多少条
    # <select name="NR" id="nr">
    # <option value="10" selected="">每页显示10条</option>
    # <option value="20">每页显示20条</option>
    # <option value="50">每页显示50条</option>
    # </select>
  38.  
  39. #下拉框操作
    mouse=driver.find_element_by_link_text("设置")
    ActionChains(driver).move_to_element(mouse).perform()
    driver.find_element_by_link_text("搜索设置").click()
  40.  
  41. #分步骤定位
    select=driver.find_element_by_id("nr")
    select.find_element_by_xpath("//option[@value='20']").click()
  42.  
  43. #直接定位
    driver.find_element_by_xpath(".//*[@id='nr']/option[2]").click()
  44.  
  45. #通过索引定位 从0开始
    Select(select).select_by_index(1)
  46.  
  47. #通过value定位
    Select(select).select_by_value('20')
  48.  
  49. #通过选项的内容定位
    Select(select).select_by_visible_text('每页显示20条')
  50.  
  51. #第一个选项
    Select(select).first_selected_option
  52.  
  53. #所有选项
    Select(select).all_selected_options
  54.  
  55. #取消所有选项的选择
    Select(select).deselect_all()
  56.  
  57. time.sleep(delay)
    driver.quit()

Python3+Selenium3+webdriver学习笔记7(选择多链接的结果、iframe、下拉框)的更多相关文章

  1. Python3+Selenium3+webdriver学习笔记9(发送富文本信息及上传文件处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记9(发送富文本信息及上传文件处理)'''from seleni ...

  2. Python3+Selenium3+webdriver学习笔记8(单选、复选框、弹窗处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记8(单选.复选框.弹窗处理)''' from selenium ...

  3. Python3+Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )

    !/usr/bin/env python -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )'''from selenium im ...

  4. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  5. Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...

  6. Python3+Selenium3+webdriver学习笔记11(cookie处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...

  7. Python3+Selenium3+webdriver学习笔记10(元素属性、页面源码)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记10(元素属性.页面源码)'''from selenium i ...

  8. Python3+Selenium3+webdriver学习笔记6(多窗口切换处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*- from selenium import webdriverfrom selenium.webdriver.co ...

  9. Python3+Selenium3+webdriver学习笔记5(模拟常用键盘和鼠标事件)

    #!/usr/bin/env python# -*- coding:utf-8 -*- from selenium import webdriverfrom selenium.webdriver.co ...

随机推荐

  1. CS231n 2016 通关 第五、六章 Dropout 作业

    Dropout的作用: cell  1 - cell 2 依旧 cell 3 Dropout层的前向传播 核心代码: train 时: if mode == 'train': ############ ...

  2. MultiBinding的StringFormat参数问题

    在wpf的绑定中,我们会用到多值绑定,如下: <MultiBinding Mode="OneWay" StringFormat="{3}({0}/{1}):{2}& ...

  3. 《SpringBoot揭秘 快速构建微服务体系》读后感(一)

    SpringIOC IOC有两种方式:一种是DI,另一种是DL,即Dependency Lookup(依赖查找).前者是当前软件实体被动接受其依赖的其他组件被IoC容器注入,而后者则是当前软件实体主动 ...

  4. EIP权限工作流平台-移动端

  5. JavaScript巩固篇(一)——数据类型与全局变量、局部变量、垃圾回收机制、存储方式、生命周期

    知识要点 数据类型 存储方式 全局变量与局部变量 变量的生命周期 垃圾回收机制 知识概览 数据类型 JavaScript的数据类型分为:基本类型.引用类型 本质区别: 基本数据类型的变量实际值存储在栈 ...

  6. OVN学习(三)

    部署OVN实验环境 同OVN学习(一) 网关 在L3网络基础上部署网关 添加L3网关 ### Central节点 # ovn-sbctl show Chassis "8bd09faf-5ba ...

  7. Oracle判断某个表是否存在的方法

    在SQL中,我们常常使用if exists来判断一个表或某个对象是否存在,例如:  IF EXISTS (SELECT * FROM sys.tables WHERE name = 'CODE_BMD ...

  8. C#中的结构体要使用new来实例化吗?

    声明结构的默认(无参数)构造函数是错误的.总是提供默认构造函数以将结构成员初始化为它们的默认值.在结构中初始化实例字段也是错误的. 如果使用 new 运算符创建结构对象,则会创建该结构对象,并调用适当 ...

  9. uoj#399. 【CTSC2018】假面(概率期望)

    传送门 记\(p_{i,j}\)为\(i\)还剩\(j\)滴血的概率,那么\(i\)最后血量的期望就是\[E_i=\sum_{j=0}^{m_i}j\times p_{i,j}\] 然后\(p\)数组 ...

  10. 【并发编程】一文带你读懂深入理解Java内存模型(面试必备)

    并发编程这一块内容,是高级资深工程师必备知识点,25K起如果不懂并发编程,那基本到顶.但是并发编程内容庞杂,如何系统学习?本专题将会系统讲解并发编程的所有知识点,包括但不限于: 线程通信机制,深入JM ...