#!/usr/bin/env python
# -*- coding:utf-8 -*- from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select import time,os
import random # about:addons 火狐浏览器安装组件,访问的地址 # <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() 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> driver.find_element_by_id("kw").send_keys(keys) #点击搜索按钮提交
driver.find_element_by_id("su").click() #获取符合条件的结果的超链接
# 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") #获取元素属性信息 网页标题 标签名 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) #结果连接个数
urllen=len(href_list)
print(urllen) #随机值
rand=random.randint(0,urllen) url=href_list[1].get_attribute('href')
print(url)
driver.get(url) #随机点击查询出的超连接页面
href_list[rand].click() #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秒
driver.implicitly_wait(2) #默认可通过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") #回到主页面上
driver.switch_to.default_content() #百度-设置-搜索页面-全部语言-每页多少条
# <select name="NR" id="nr">
# <option value="10" selected="">每页显示10条</option>
# <option value="20">每页显示20条</option>
# <option value="50">每页显示50条</option>
# </select> #下拉框操作
mouse=driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click() #分步骤定位
select=driver.find_element_by_id("nr")
select.find_element_by_xpath("//option[@value='20']").click() #直接定位
driver.find_element_by_xpath(".//*[@id='nr']/option[2]").click() #通过索引定位 从0开始
Select(select).select_by_index(1) #通过value定位
Select(select).select_by_value('20') #通过选项的内容定位
Select(select).select_by_visible_text('每页显示20条') #第一个选项
Select(select).first_selected_option #所有选项
Select(select).all_selected_options #取消所有选项的选择
Select(select).deselect_all() 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. android TextView selector点击样式改变

    1.selector 从单词的意思来说:选择器,就是对你的目标的控制.selector主要是用在ListView的item单击样式和TextView和Button的点击样式. 2.主要属性介绍: an ...

  2. hdu 4123 Bob’s Race (dfs树上最远距离+RMQ)

    C - Bob’s Race Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Subm ...

  3. VS2015中使用Git遇到问题 Cannot do push / pull in git - working with visual studio

    I have made a lot of changes, when I am trying to push them - I am getting the next error: You canno ...

  4. 3. 关于sql注入的综合题

    关于sql注入的综合题                          ----------南京邮电大学ctf : http://cms.nuptzj.cn/ 页面上也给了好多信息: 根据这个sm. ...

  5. NativeScript官方书籍:NativeScript in Action-用你现有技术构建移动应用程序

    大家好,我用nativescript做企业级移动应用开发一年多了.从最初只能看nativescript英文文档,到现在看到官方发布正式的书籍,感觉nativescript变得越来越好. 当然,在这个过 ...

  6. JAVA基础--IO输入输出(File使用)17

    一. File中的方法 1.  列举方法 /* * 获取指定目录以及子目录下的所有文件和文件夹 */ public class ListFilesDemo { public static void m ...

  7. 蜂窝网络TDOA定位方法的Fang算法研究及仿真纠错

    科学论文为我们提供科学方法,在解决实际问题中,能极大提高生产效率.但论文中一些失误则可能让使用者浪费大量时间.自己全部再推导那真不容易,怀疑的成本特别高,通常不会选择这条路.而如果真是它的问题,其它所 ...

  8. 关于fiddler抓取HTTPS请求443的问题

    1.环境:fiddler4.IOS10.3以上 2.需求:使用fiddler抓取IOS上的https请求 3.解决方案 步骤一:设置fiddler 步骤二:手机端安装证书 手机设置代理,打开手机浏览器 ...

  9. pytest框架(四)

    测试用例setup和teardown 代码示例一 # coding=utf-8 import pytest def setup_module(): print("setup_module:整 ...

  10. Java基础--面向对象以及相关知识

    一. 面向对象特征与原则 1.三大特征:封装.继承.多态. (1)封装:将客观的事物封装成抽象的类,封装代码逻辑,并通过访问控制符来控制访问的方式,从而保护程序(使用反射时,可以获取对象的私有方法和成 ...