• click和clear
  1. from selenium.webdriver.support.wait import WebDriverWait
  2. import time
  3. browser = webdriver.Chrome()
  4. browser.get('https://www.baidu.cn/')
  5. wait = WebDriverWait(browser, 10)
  6. input_tag = wait.until(EC.presence_of_element_located((By.ID, 'twotabsearchtextbox')))
  7. input_tag.send_keys('iphone 8')
  8. button = browser.find_element_by_css_selector('#nav-search > form > div.nav-right > div > input')
  9. button.click()
  10. time.sleep(3)
  11. input_tag = browser.find_element_by_id('twotabsearchtextbox')
  12. input_tag.clear() # 清空输入框
  13. input_tag.send_keys('iphone7plus')
  14. button = browser.find_element_by_css_selector('#nav-search > form > div.nav-right > div > input')
  15. button.click()
  • ActionChains
  1. from selenium import webdriver
  2. from selenium.webdriver import ActionChains
  3. from selenium.webdriver.support.wait import WebDriverWait
  4. import time
  5. driver = webdriver.Chrome()
  6. driver.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
  7. wait = WebDriverWait(driver, 3)
  8. try:
  9. driver.switch_to.frame('iframeResult') # 切换到iframeResult
  10. sourse = driver.find_element_by_id('draggable')
  11. target = driver.find_element_by_id('droppable')
  12. # 方式一:基于同一个动作链串行执行
  13. # actions=ActionChains(driver) #拿到动作链对象
  14. # actions.drag_and_drop(sourse,target) #把动作放到动作链中,准备串行执行
  15. # actions.perform()
  16. # 方式二:不同的动作链,每次移动的位移都不同
  17. ActionChains(driver).click_and_hold(sourse).perform()
  18. distance = target.location['x'] - sourse.location['x']
  19. track = 0
  20. while track < distance:
  21. ActionChains(driver).move_by_offset(xoffset=2, yoffset=0).perform()
  22. track += 2
  23. ActionChains(driver).release().perform()
  24. time.sleep(10)
  25. finally:
  26. driver.close()
  • 自定义JS
  1. from selenium import webdriver
  2. try:
  3. browser = webdriver.Chrome()
  4. browser.get('https://www.baidu.com')
  5. browser.execute_script('alert("hello world")') # 打印警告
  6. finally:
  7. browser.close()
  • 切换iframe
  1. from selenium import webdriver
  2. try:
  3. browser = webdriver.Chrome()
  4. browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
  5. browser.switch_to.frame('iframeResult') # 切换到id为iframeResult的frame
  6. tag1 = browser.find_element_by_id('droppable')
  7. print(tag1)
  8. # tag2=browser.find_element_by_id('textareaCode') #报错,在子frame里无法查看到父frame的元素
  9. browser.switch_to.parent_frame() # 切回父frame,就可以查找到了
  10. tag2 = browser.find_element_by_id('textareaCode')
  11. print(tag2)
  12. finally:
  13. browser.close()
  • 显示等待和隐式等待

    • 隐式等待:在browser.get('xxx')前就设置,针对所有元素有效
  1. browser.implicitly_wait(10)
  • 显式等待:在browser.get('xxx')之后设置,只针对某个元素有效
  1. from selenium.webdriver.support.wait import WebDriverWait
  2. wait=WebDriverWait(browser,10)
  3. wait.until(EC.presence_of_element_located((By.ID,'content_left')))
  • 获取标签属性
  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.support import expected_conditions as EC
  4. from selenium.webdriver.support.wait import WebDriverWait
  5. browser = webdriver.Chrome()
  6. browser.get('https://www.amazon.cn/')
  7. wait = WebDriverWait(browser, 10)
  8. wait.until(EC.presence_of_element_located((By.ID, 'cc-lm-tcgShowImgContainer')))
  9. tag = browser.find_element(By.CSS_SELECTOR, '#cc-lm-tcgShowImgContainer img')
  10. # 获取标签属性,
  11. print(tag.get_attribute('src'))
  12. # 获取标签ID,位置,名称,大小
  13. print(tag.id)
  14. print(tag.location)
  15. print(tag.tag_name)
  16. print(tag.size)
  17. browser.close()

浏览器操作

  • 浏览器前进后退
  1. browser.back()
  2. browser.forward()
  • cookies
  1. from selenium import webdriver
  2. browser=webdriver.Chrome()
  3. browser.get('https://www.zhihu.com/explore')
  4. print(browser.get_cookies())
  5. browser.add_cookie({'k1':'xxx','k2':'yyy'})
  6. print(browser.get_cookies())
  7. # browser.delete_all_cookies()
  • 切换选项卡
  1. import time
  2. from selenium import webdriver
  3. browser=webdriver.Chrome()
  4. browser.get('https://www.baidu.com')
  5. browser.execute_script('window.open()')
  6. print(browser.window_handles) #获取所有的选项卡
  7. browser.switch_to_window(browser.window_handles[1])
  8. browser.get('https://www.taobao.com')
  9. time.sleep(10)
  10. browser.switch_to_window(browser.window_handles[0])
  11. browser.get('https://www.sina.com.cn')
  12. browser.close()
  • 异常处理
  1. from selenium import webdriver
  2. from selenium.common.exceptions import TimeoutException,NoSuchElementException,NoSuchFrameException
  3. try:
  4. browser=webdriver.Chrome()
  5. browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
  6. browser.switch_to.frame('iframssseResult')
  7. except TimeoutException as e:
  8. print(e)
  9. except NoSuchFrameException as e:
  10. print(e)
  11. finally:
  12. browser.close()

selenium元素和浏览器操作的更多相关文章

  1. Python_Selenium之basepage 识别元素、浏览器操作、获取属性、鼠标事件、键盘事件、弹窗、切换frame、切换句柄等封装

    #coding=gbkimport osimport timefrom selenium import webdriverfrom selenium.webdriver.common.by impor ...

  2. selenium webdriver(1)---浏览器操作

    启动浏览器 如何启动浏览器已在上篇文章中说明,这里还是以chrome为例,firefox.IE启动方式相同. //启动浏览器 import org.openqa.selenium.WebDriver; ...

  3. selenium python 中浏览器操作

    1.启用浏览器 browser = webdriver.Chrome()               谷歌浏览器 browser = webdriver.Firefox()              ...

  4. 吴裕雄--天生自然python学习笔记:python用 Selenium 组件实现浏览器操作自动化

    一般情况下,我们都是用手工操作的方式来对浏览器进行各种操作 . 实际上, 只要我们安装一个自动化操作组件, Python 就可以让我们的很多操作实现自动化 . Selenium 组件 在开发网页时,用 ...

  5. selenium+Python(浏览器操作)

    1 .浏览器最大化我们知道调用启动的浏览器不是全屏的,这样不会影响脚本的执行,但是有时候会影响我们“观看”脚本的执行. #coding=utf-8 from selenium import webdr ...

  6. selenium 对chrome浏览器操作

    参照http://www.testwo.com/blog/6931博客内容 1.下载ChromeDriver驱动包(下载地址: http://chromedriver.storage.googleap ...

  7. Selenium 3----控制浏览器操作

    控制浏览器窗口大小 eg:将浏览器设置成移动端大小(480*800),进行访问 set_window_size()方法: from selenium import webdriver driver=w ...

  8. 3 - Selenium元素定位和操作

    3.1定位 <button id="gbqfba" aria-label="Google Search" name="btnK" cl ...

  9. 【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 二.话不多说,直接开干,开始搭建自动化测试环境 这里以前在 ...

随机推荐

  1. CODE FESTIVAL 2017 qual B C - 3 Steps【二分图】

    CODE FESTIVAL 2017 qual B C - 3 Steps 题意:给定一个n个结点m条边的无向图,若两点间走三步可以到,那么两点间可以直接连一条边,已经有边的不能连,问一共最多能连多少 ...

  2. ios7.1安装提示"无法安装应用程序 由于证书无效"的解决方式二(dropbox被封项目转移到Appharbor上)

    6月18日起dropbox被天朝封了(这个真是无力吐槽),而ios7.1要求使用ssl安全连接,则须要又一次找到一个支持https的免费server. Appharbor是个不错的选择,操作简单.此外 ...

  3. HDU-1114_Piggy-Bank

    Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem ...

  4. deepin 15.11 升级docker-ce 18.01到19.03.1,升级docker compose 1.23到1.24.1

    1.升级docker compose ,docker官方安装方法 $ sudo curl -L "https://github.com/docker/compose/releases/dow ...

  5. @noi.ac - 171@ 立方体

    目录 @description@ @solution@ @accepted code@ @details@ @description@ TonyFang 打算送你一些立方体. 你需要在 [1, n] ...

  6. 使用国内阿里maven私服方法

    方法1,在maven的config下setings.xml文件中加入以下代码 <mirrors> <mirror> <id>mirrorId</id> ...

  7. supersockets支持热更新的服务器实例配置选项

    SuperSocket 支持以下配置选项的热更新: * logCommand * idleSessionTimeOut * maxRequestLength * logBasicSessionActi ...

  8. 2016.1.22 扩充临时表空间解决ora-01652错误

    今天运行一个复杂查询时报错ora-01652 无法通过128 扩展temp段, 网上说是临时表空间大小不够,运行了脚本调整临时表空间,问题解决 alter database tempfile '/ap ...

  9. CodeForces 1216C(假的计算几何+扫描线)

    传送门 •题意 给你三个矩形,依次编号为 1,2,3: 判断 矩形1 是否被 矩形2 和 矩形3 完全覆盖: 如果没有完全覆盖,输出 "YES",反之,输出 "NO&qu ...

  10. H3C 用三层交换机实现VLAN间路由