Frame相关

  1. import time
  2. from selenium import webdriver
  3. from selenium.common.exceptions import NoSuchElementException
  4. browser = webdriver.Firefox()
  5. url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
  6. browser.get(url)
  7. browser.switch_to.frame('iframeResult')
  8. source = browser.find_element_by_css_selector('#draggable')
  9. print(source)
  10. # 在frame里面找不到外面的元素
  11. try:
  12. logo = browser.find_element_by_class_name('logo')
  13. except NoSuchElementException:
  14. print('NO LOGO')
  15. # 切换回父级frame
  16. browser.switch_to.parent_frame()
  17. logo = browser.find_element_by_class_name('logo')
  18. print(logo)
  19. print(logo.text)

等待

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

显示等待常用的方法

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

页面的前进和后退

  1. import time
  2. from selenium import webdriver
  3. browser = webdriver.Firefox()
  4. browser.get('https://www.baidu.com/')
  5. browser.get('https://www.taobao.com/')
  6. browser.get('https://www.jd.com/')
  7. browser.back()
  8. time.sleep(1)
  9. browser.forward()
  10. browser.close()

cookies设置

  1. from selenium import webdriver
  2. browser = webdriver.Firefox()
  3. browser.get('https://www.zhihu.com') # 以列表的形式返回
  4. print(browser.get_cookies())
  5. # 以追加的形式添加cookie
  6. browser.add_cookie({'name':'name',
  7. 'domain':'www.zhihu.com',
  8. 'value':'germy'
  9. })
  10. print(browser.get_cookies())
  11. browser.delete_all_cookies()
  12. print(browser.get_cookies())

选项卡设置

  1. import time
  2. from selenium import webdriver
  3. browser = webdriver.Firefox()
  4. browser.get('https://www.baidu.com')
  5. browser.execute_script('window.open()')
  6. print(browser.window_handles)
  7. # 窗口的切换从0开始
  8. browser.switch_to_window(browser.window_handles[1])
  9. browser.get('https://www.taobao.com')
  10. time.sleep(1)
  11. browser.switch_to_window(browser.window_handles[0])
  12. browser.get('https://www.jd.com')

异常处理

不使用异常处理

  1. from selenium import webdriver
  2. browser = webdriver.Firefox()
  3. browser.get('http://www.baidu.com')
  4. browser.find_element_by_id('hello') # 报错 selenium.common.exceptions.NoSuchElementException

使用异常处理

  1. from selenium import webdriver
  2. from selenium.common.exceptions import TimeoutException,NoSuchElementException
  3. browser = webdriver.Firefox()
  4. try:
  5. browser.get('https://www.baidu.com')
  6. except TimeoutException:
  7. print('Time out')
  8. try:
  9. browser.find_element_by_id('hello')
  10. except NoSuchElementException:
  11. print('No Elemment')
  12. finally:
  13. 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. [linux]安装code::blocks

    1.安装基本编译环境 $sudo apt-get install build-essential $sudo apt-get install gdb 2.安装codeblock $sudo apt-g ...

  2. macbook 安装任意来源

    sudo spctl --master-disable Comand+r Csrutil disable Reboot

  3. 51nod1471 小S的兴趣

    题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 320 小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题 ...

  4. 【bzoj】2326 [HNOI2011]数学作业

    [题意]给定n和m,求1~n从高位到低位连接%m的结果.n=11时,ans=1234567891011%m.n<=10^18,m<=10^9. [算法]递推+矩阵快速幂 [题解] 考虑枚举 ...

  5. 浮动&定位

    本文地址:http://www.cnblogs.com/veinyin/p/7606652.html  浮动和定位能够让我们把一些元素放到理想的位置,当然,相比之下 float 只能浮动到左边或右边, ...

  6. css各种姿势的水平居中

    首先是最常用的,利用margin属性的auto来进行水平居中 margin: 0 auto; 其中0是指上下的margin,auto是左右的margin,margin这个属性的简写是按顺时针走的,也就 ...

  7. css3全屏背景显示

    background:url(zhongyi2.png) no-repeat center center fixed;/* -webkit-background-size:cover; -moz-ba ...

  8. NYOJ 208 Supermarket (模拟+并查集)

    题目链接 描述 A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Pr ...

  9. videojs做直播、弹幕

    从上一年开始,我们开始接触直播,现在直播成本真的很低,很多CDN供应商都有提供,本文只是大概讲述播放器这个话题. 开始调研 播放格式,我挑了三种.分别是HLS,RTMP,HTTP-FLV. 下面简单说 ...

  10. TypeError: not all arguments converted during string formatting

    print ("So, you're 5r old, %r tall and %r heavy." % (age, height, weight)) print ("So ...