Frame相关

import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException browser = webdriver.Firefox()
url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
browser.get(url)
browser.switch_to.frame('iframeResult') source = browser.find_element_by_css_selector('#draggable')
print(source) # 在frame里面找不到外面的元素
try:
logo = browser.find_element_by_class_name('logo')
except NoSuchElementException:
print('NO LOGO') # 切换回父级frame
browser.switch_to.parent_frame()
logo = browser.find_element_by_class_name('logo')
print(logo)
print(logo.text)

等待

  • 隐式等待
from selenium import webdriver

browser = webdriver.Firefox()
browser.implicitly_wait(10) # 设置隐式等待超时时间
browser.get('https://www.zhihu.com/explore') input = browser.find_element_by_class_name('zu-top-add-question')
print(input)
browser.close()
  • 显示等待
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC browser = webdriver.Firefox()
browser.get('https://www.taobao.com')
wait = WebDriverWait(browser,10)
input = wait.until(EC.presence_of_element_located((By.ID, 'q')))
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search')))
print(input, button)

显示等待常用的方法

title_is     # 标题是某个内容
title_contains # 标题中包含什么内容
presence_of_element_located # 元素加载出, 传入定位元组,如(By.ID, 'p;)
visibility_of_element_located # 元素可见,传入定位元组
visibility_of # 可见,传入元素对象
presence_of_all_elements_located # 所有的元素加载出
text_to_be_present_in_element #某个元素文本包含某个文字
text_to_be_present_in_element_value #某个元素包含某个文字
frame_to_be_available_and_switch_to_it # frame加载并切换过去
invisibility_of_element_loacted # 元素不可见
element_to_be_clickable # 元素可点击
staleness_of # 判断某个元素是都仍在DOM,可判断出页面是否刷新
element_to_be_selected #元素可选择,传入元素对象
element_located_to_be_selected # 元素可选择,传定位元组
element_selection_state_to_be # 传入元素对象及其状态,相等返回True,否则返回False
element_located_selection_state_to_be # 传入定位元组以及状态,相等返回True,否则返回False
alert_is_present # 是否出现Alert

页面的前进和后退

import time
from selenium import webdriver browser = webdriver.Firefox()
browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com/')
browser.get('https://www.jd.com/') browser.back()
time.sleep(1)
browser.forward()
browser.close()

cookies设置

from selenium import webdriver

browser  = webdriver.Firefox()
browser.get('https://www.zhihu.com') # 以列表的形式返回
print(browser.get_cookies())
# 以追加的形式添加cookie
browser.add_cookie({'name':'name',
'domain':'www.zhihu.com',
'value':'germy'
}) print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())

选项卡设置

import time
from selenium import webdriver browser = webdriver.Firefox()
browser.get('https://www.baidu.com')
browser.execute_script('window.open()')
print(browser.window_handles) # 窗口的切换从0开始 browser.switch_to_window(browser.window_handles[1])
browser.get('https://www.taobao.com')
time.sleep(1)
browser.switch_to_window(browser.window_handles[0])
browser.get('https://www.jd.com')

异常处理

不使用异常处理

from selenium import webdriver

browser = webdriver.Firefox()

browser.get('http://www.baidu.com')
browser.find_element_by_id('hello') # 报错 selenium.common.exceptions.NoSuchElementException

使用异常处理

from  selenium import webdriver
from selenium.common.exceptions import TimeoutException,NoSuchElementException browser = webdriver.Firefox()
try:
browser.get('https://www.baidu.com')
except TimeoutException:
print('Time out')
try:
browser.find_element_by_id('hello')
except NoSuchElementException:
print('No Elemment')
finally:
browser.close()

Selenium快速入门(下)的更多相关文章

  1. 元素(WebElement)-----Selenium快速入门(三)

    上一篇<元素定位-----Selenium快速入门(二)>说了,如何定位元素,本篇说说找到的元素(WebElement)该怎么用. WebElement常用方法:  返回值  方法名  说 ...

  2. 隐式等待-----Selenium快速入门(九)

    有时候,网页未加载完成,或加载失败,但是我们后续的代码就已经开始查找页面上的元素了,这通常将导致查找元素失败.在本系列Selenium窗口切换-----Selenium快速入门(六)中,我们就已经出现 ...

  3. Selenium下拉菜单(Select)的操作-----Selenium快速入门(五)

    对于一般元素的操作,我们只要掌握本系列的第二,三章即可大致足够.对于下拉菜单(Select)的操作,Selenium有专门的类Select进行处理.文档地址为:http://seleniumhq.gi ...

  4. Selenium简介与环境搭配-----Selenium快速入门(一)

    Selenium是一套自动化测试框架.官方网站是:https://www.seleniumhq.org/  某些童鞋访问可能需要FQ. Selenium支持多种语言开发,例如Java,Python,C ...

  5. 元素定位-----Selenium快速入门(二)

    一.eclipse设置 工欲善其事必先利其器,在说元素定位之前,先来设置下eclipse. 首先放大一下字体,点击windows-preferences 其次,eclipse对于java的智能提示默认 ...

  6. 终结篇:RemoteWebDriver与Grid简介-----Selenium快速入门(十五)

    Selenium的基本使用,已经介绍得差不多了,今天来简单说说RemoteWebDriver与Grid,也是本系列的最后一篇. 还记得本系列第一章(Selenium简介与环境搭配)的配置中,提到我们下 ...

  7. Cookie操作-----Selenium快速入门(十一)

    什么是cookie?顾名思义,就是饼干,小甜饼.而根据读音则是“曲奇”的意思,相信不少的人都吃过.而在网络上,cookie是指浏览器在本地的一种少量数据的存储方式.例如,我们常见的,登陆的时候有个ch ...

  8. Selenium框架切换-----Selenium快速入门(七)

    上一篇说了窗口的切换,本篇说说框架的切换. 切换框架:是指切换html中的iframe标签元素或者frame标签元素,注意,并不包括frameset 以下是常用的方法: 方法 说明 WebDriver ...

  9. driver.get()和driver.navigate().to()到底有什么不同?-----Selenium快速入门(四)

    大家都知道,这两个方法都是跳转到指定的url地址,那么这两个方法有什么不同呢?遇到这种情况,第一反应就是查查官方的文档. 官方文档的说法是:Load a new web page in the cur ...

随机推荐

  1. chmod及chown命令详解

    1,chmod 指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/ ...

  2. python常用函数库及模块巧妙用法汇总

    在用python编写脚本或写程序过程中总要遇到一些对大文件或数据进行排序,计算,循环跌代等.我想下面这些函数库一定能用得到,总结如下:便于以后备查 列表去重(传说是列表去重最高效的方法): al = ...

  3. 常用的20个强大的 Sublime Text 插件

    作为一个开发者你不可能没听说过 Sublime Text.不过你没听说过也没关系,下面让你明白. Sublime Text是一款非常精巧的文本编辑器,适合编写代码.做笔记.写文章.它用户界面十分整洁, ...

  4. 利用PhantomJS生成网站截图

    var page = require('webpage').create(); page.open('http://qq.com', function () { page.render('exampl ...

  5. 编程笔记:JavaScript 中的类型检查

    在Badoo的时候我们写了大量的JS脚本,光是在我们的移动web客户端上面就有大概60000行,可想而知,维护这么多JS可是相当具有挑战性的.在写如上规模js脚本客户端应用的时候我们必须对一件事保持警 ...

  6. 【CodeForces】914 E. Palindromes in a Tree 点分治

    [题目]E. Palindromes in a Tree [题意]给定一棵树,每个点都有一个a~t的字符,一条路径回文定义为路径上的字符存在一个排列构成回文串,求经过每个点的回文路径数.n<=2 ...

  7. php通过composer添加一个包以后,无法通过git将这个包的代码文件提交上去

    实际上是因为 vender 包中包含 有.git 文件,是composer 下载时下载了 该项目的github源码. 就是参数 源码优先 --prefer-source composer update ...

  8. 【洛谷 P2865】 [USACO06NOV]路障Roadblocks(最短路)

    题目链接 次短路模板题. 对每个点记录最短路和严格次短路,然后就是维护次值的方法了. 和这题一样. #include <cstdio> #include <queue> #in ...

  9. E - Is It A Tree? 并查集判断是否为树

    题目链接:https://vjudge.net/contest/271361#problem/E 具体思路:运用并查集,每一次连接上一个点,更新他的父亲节点,如果父亲节点相同,则构不成树,因为入读是2 ...

  10. linux下的僵尸进程处理SIGCHLD信号【转】

    转自:http://www.cnblogs.com/wuchanming/p/4020463.html 什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打 ...