from selenium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException
import time # 声明浏览器对象
driver = webdriver.Chrome() # 可用的浏览器对象:
# Firefox,Chrome,Ie,Edge,Opera,Safari,BlackBerry,PhantomJS,Android # 访问页面
def foo1():
driver.get("http://www.baidu.com")
print(driver.page_source) # 查找元素
try:
p=driver.find_element_by_class_name("p")
except NoSuchElementException as e:
print(e)
"""
# 单个元素
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_tag_name
find_element_by_link_text
find_element_by_class_name
find_element_by_css_selector
find_element_by_partial_link_text # 多个元素
find_elements_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_tag_name
find_elements_by_link_text
find_elements_by_class_name
find_elements_by_css_selector
find_elements_by_partial_link_text
""" # 通用查找方式
from selenium.webdriver.common.by import By
driver.find_element(By.ID, "kw")
"""
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
""" # 元素交互
def foo2():
import time
driver.get("http://www.baidu.com") input = driver.find_element_by_id("kw")
input.send_keys("淘宝")
time.sleep(2) input.clear()
input.send_keys("京东")
button = driver.find_element_by_id("su")
time.sleep(2) button.click() # 交互动作
# 将动作附加到动作链中串行执行
def foo3():
driver.get("http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
# 切换到子frame
driver.switch_to.frame("iframeResult")
draggable = driver.find_element_by_id("draggable")
droppable = driver.find_element_by_id("droppable")
actions = webdriver.ActionChains(driver)
actions.drag_and_drop(draggable, droppable)
actions.perform()
# 切换回父frame
driver.switch_to.parent_frame() # 执行javascript
def foo4():
driver.execute_script('alert("hello")') # 获取文本和属性
def foo5():
driver.get("https://www.zhihu.com/topics")
# 隐式等待
driver.implicitly_wait(10) # 显示等待
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
wait = WebDriverWait(driver, 10)
logo = wait.until(EC.presence_of_element_located((By.ID, "zh-top-link-logo"))) print(logo.text) # 获取属性, id, 标签名, 位置, 大小
print(logo.get_attribute("class"))
print(logo.id)
print(logo.location)
print(logo.tag_name)
print(logo.size) # 前进后退
def foo6():
import time
driver.get("http://www.taobao.com")
driver.get("http://www.jd.com")
driver.get("http://www.qq.com")
time.sleep(2)
driver.back()
time.sleep(2)
driver.forward()
time.sleep(3) # cookie
def foo7():
driver.get("https://www.zhihu.com/explore")
print(driver.get_cookies())
driver.add_cookie({"name": "mouday", "value": "mouday.com"})
print(driver.get_cookies())
driver.delete_all_cookies()
print(driver.get_cookies()) # 选项卡管理
def foo8():
driver.get("https://www.qq.com/")
# 开启
driver.execute_script("window.open()")
print(driver.window_handles) # 切换
driver.switch_to_window(driver.window_handles[1])
driver.get("https://www.taobao.com/")
time.sleep(2) # 切换
driver.switch_to_window(driver.window_handles[0])
driver.get("https://www.jd.com/")
time.sleep(2) # 异常处理
def foo9():
try:
driver.get("https://www.google.com")
except TimeoutException as e:
print(e.msg) try:
p = driver.find_element_by_class_name("p")
except NoSuchElementException as e:
print(e) # 关闭退出浏览器
driver.close()
driver.quit() # 如果不退出浏览器,会报错:
# ImportError: sys.meta_path is None, Python is likely shutting down --------------------- 本文来自 彭世瑜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/mouday/article/details/80148104?utm_source=copy

  

python selenium 代码的更多相关文章

  1. python+selenium初学者常见问题处理

    要做web自动化,第一件事情就是搭建自动化测试环境,那就没法避免的要用到selenium了. 那在搭建环境和使用过程中经常会遇到以下几类问题: 1.引入selenium包失败: 出现这种错误,一般分为 ...

  2. python selenium下拉框定位

    一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...

  3. Python + Selenium +Chrome 批量下载网页代码修改【新手必学】

    Python + Selenium +Chrome 批量下载网页代码修改主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt来达到在登陆状态下 批量打开并下载网页, ...

  4. 【Selenium05篇】python+selenium实现Web自动化:读取ini配置文件,元素封装,代码封装,异常处理,兼容多浏览器执行

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第五篇博 ...

  5. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  6. Python + Selenium 实现登录Office 365

    最近捡起之前用的Python + Selenium实现工作中需要的登录Office 365功能.(吐槽:国内网络真是卡,登录Office 365实属不易.另外Selenium这样的网站都要墙,无法理解 ...

  7. python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  8. 使用python selenium进行自动化functional test

    Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...

  9. Python Selenium设计模式-POM

    前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python s ...

随机推荐

  1. Direct3D中 SetTextureStageState 函数

    先说明几个概念: 1, Multipass(多通道)     将一个任务划分成几个阶段,由多个pass处理不同阶段,后续pass总是处理前一个pass的结果.例如复杂的光照方程可以分成几个pass来计 ...

  2. 05-session-会话跟踪技术

    1.session简介 Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie Session是服务器端技 ...

  3. 牛客国庆集训派对Day1 B. Attack on Titan

    B. Attack on Titan 链接 #include<cstdio> #include<algorithm> #include<cstring> #incl ...

  4. 5249: [2018多省省队联测]IIIDX

    5249: [2018多省省队联测]IIIDX 链接 分析: 贪心. 将给定的权值从大到小排序,从第一个往后挨个赋值,考虑第i个位置可以赋值那些树.首先满足前面必须至少有siz[i]个权值没选,如果存 ...

  5. Gitlab+Jenkins学习之路(二)之gitlab部署

    1.安装依赖及gitlab [root@linux-node1 ~]# yum install -y curl policycoreutils openssh-server openssh-clien ...

  6. Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...

  7. [CQOI2015]任务查询系统 主席树

    [CQOI2015]任务查询系统 LG传送门 以前还没见过主席树的这种写法. 考虑使用差分的思想处理每一个任务,然后所有的东西就都能顺理成章地用主席树维护了,查询的时候和平时的主席树有一点不同,详见代 ...

  8. SSIS 数据流优化

    一,数据流设计优化 数据流有两个特性:流和在内存缓冲区中处理数据,根据数据流的这两个特性,对数据流进行优化. 1,流,同时对数据进行提取,转换和加载操作 流,就是在source提取数据时,转换组件处理 ...

  9. TCP Over HTTP 的Buffer问题

    记录下备忘. 场景:要把TCP拆成一个个HTTP请求,通过Proxy 1.HTTP Client上载数据到CCProxy ,然后再到Web服务器的时候. 如果数据量比较小,例如10个字节,Proxy就 ...

  10. grads,fortran,ncl二进制文件

    #转自论坛日志# grad用fwrite生成的二进制文件大小和ncl用fbinwrite生成的不一样,相差有8个字节,参考了以下网页,问题出在顺序存取和直接存取的差异. 以下是我的理解,欢迎指正:   ...