'''
Author: Liang
LastEditors: Liang
Date: 2020-10-08 11:41:09
LastEditTime: 2020-10-21 13:46:21
Email: str-liang@outlook.com
FilePath: /测试练习e:/Python_project/平时练习/ceshi.py
Environment: Win 10 Python 3.8
Description:
'''from time import sleep
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait # 元素等待 是一个 Class 类,传参一个对象 class WebDriverWait(object),第二个参数可以设定等待时间
from selenium.webdriver.support import expected_conditions as EC # 和下面的 By 配合使用,确定元素对象
from selenium.webdriver.support.select import Select # 用于下拉框选择
from selenium.webdriver.common.by import By # 类似于 webdriver.Chrome().find_element_by...  这个类似于底层实现brower = webdriver.Chrome()
brower.get('http://zz222399.225kq.cn/?cid=1')
big_classify = brower.find_element_by_xpath('//*[@id="cid"]')
small_classify = brower.find_element_by_xpath('//*[@id="tid"]');sleep(1)
Select(big_classify).select_by_visible_text('【 免费福利区-每天领取 】');sleep(1)
Select(small_classify).select_by_index(4);sleep(1)# 判断元素是否存在
try:# WebDriverWait(brower,10).until(EC.presence_of_element_located((By.XPATH,'//*[@id="layui-layer3"]/div[3]/a'))) # 注意 By 后面不是用的括号,而是直接跟逗号+元素名称,而且 By 是被括号括起来的find_element = WebDriverWait(brower,10).until(EC.presence_of_element_located((By.XPATH,'//*[@id="layui-layer3"]/div[3]/a')));sleep(1) # 注意By后面不是用的括号,而是直接跟逗号+元素名称)brower.find_element_by_xpath('//*[@id="layui-layer3"]/div[3]/a').click();sleep(1)
except:passbrower.find_element_by_xpath('//*[@id="inputvalue"]').send_keys('516527301');sleep(1)
brower.find_element_by_xpath('//*[@id="submit_buy"]').click()
sleep(5)
brower.quit()

附上知识点小案例--链接可参照

1、本节课知识点 https://selenium-python-zh.readthedocs.io/en/latest/waits.html

2、selenium-python中文文档(大神翻译)  https://python-selenium-zh.readthedocs.io/zh_CN/latest/

3、官方文档:https://www.selenium.dev/documentation/zh-cn/

知识点正文如下:

5. 等待页面加载完成(Waits)

现在的大多数的Web应用程序是使用Ajax技术。当一个页面被加载到浏览器时, 该页面内的元素可以在不同的时间点被加载。这使得定位元素变得困难, 如果元素不再页面之中,会抛出 ElementNotVisibleException 异常。 使用 waits, 我们可以解决这个问题。waits提供了一些操作之间的时间间隔- 主要是定位元素或针对该元素的任何其他操作。

Selenium Webdriver 提供两种类型的waits - 隐式和显式。 显式等待会让WebDriver等待满足一定的条件以后再进一步的执行。 而隐式等待让Webdriver等待一定的时间后再才是查找某元素。

5.1. 显式等待

显式等待是你在代码中定义等待一定条件发生后再进一步执行你的代码。 最糟糕的案例是使用time.sleep(),它将条件设置为等待一个确切的时间段。 这里有一些方便的方法让你只等待需要的时间。WebDriverWait结合ExpectedCondition 是实现的一种方式。

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 ECdriver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
finally:driver.quit()

在抛出TimeoutException异常之前将等待10秒或者在10秒内发现了查找的元素。 WebDriverWait 默认情况下会每500毫秒调用一次ExpectedCondition直到结果成功返回。 ExpectedCondition成功的返回结果是一个布尔类型的true或是不为null的返回值。

Python Selenium之等待元素小案例(用于某网站自动打开领取QQ名片赞)--文末有附selenium知识点以及对应学习文档网址相关推荐

  1. python计算银行余额_Python 小案例实战 —— 简易银行存取款查询系统

    Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...

  2. python三种等待元素方法

    在做web或app的自动化测试经过会出现找不到元素而报错的情况,很多时候是因为元素 还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了.那么我可以用等待 元素加载完成后再执行查找元素的co ...

  3. python电视剧口碑分析_小案例(七):口碑分析(python)

    微信公众号:机器学习养成记 搜索添加微信公众号:chenchenwings <菜鸟侦探挑战数学分析>小案例,python实现第七弹 案件回顾 商业街口碑分析 1,顾客在网络上会发表对商品或 ...

  4. python 图形_Python切分图像小案例(1、3、2、4象限子图互换)

    首先解释上一篇文章详解Python科学计算扩展库numpy中的矩阵运算(1)最后的习题,该问题答案是10 ** 8 = 100000000,原因在于Python中的运算符**是从右往左计算的,这在Py ...

  5. Python文本处理2个小案例(文本嗅探与关键词占比统计)

    问题描述:有一些句子和一些关键词,现在想找出包含至少一个关键词的那些句子(文本嗅探),可以参考print('='*30)之前的代码.如果想进一步计算每个句子中的关键词占比(句子中所有关键词长度之和/句 ...

  6. python百度关键词自动提交订单_Python小工具-根据输入关键字自动打开百度搜索结果的第一页...

    PythonBaidu.gif 步骤分析: 1. 伪装浏览器的 User-Agent 2. 读取输入参数并组装为请求参数 3. 使用 `requests` 模块请求数据 4. 使用 `bs4` 查找需 ...

  7. 【Python实战】WIFI密码小工具,甩万能钥匙十条街,WIFI任意连哦~(附源码)

    前言 不会吧不会吧,流量都这么便宜了不会还有人在蹭别人家WIFI吧? 但是也可以理解哈,试问谁还没有经历过这种时光那?就算是我,也曾经有过蹲在别人家大门 口蹭WIFi的事儿.这都是成长道路中不可避免的 ...

  8. 利用云函数+Python实现每日网站自动签到并用QQ提醒

    利用云函数和Python实现蘑菇丁软件每日自动登录签到 由于怕token失效所以写成了每一次打卡前都要登录获取token一次,经过测试多次登录并不会造成登录异常,账号封禁等影响 Python3.6.2 ...

  9. 新技能 | 使用python代码来高效操作Excel表格 (文末赠书5本)

    新技能 | 使用python代码来高效操作Excel表格 (文末赠书5本) 在日常学习和工作中,少不了要跟Excel表格打交道.而我们作为程序猿,深知代码编程给人带来的便捷性,那我们怎么样使用代码来操 ...

最新文章

  1. hdu 3613 扩展kmp+回文串
  2. 国际农产品市场谋定特点趋势 对话国际农民丰收节贸易会
  3. linux tomcat守护_linux-非root用户运行tomcat(示例代码)
  4. python包和目录有什么不同_python模块和包的区别
  5. javascript中闭包的真正作用
  6. react中父子组件数据传递,子组件之间的数据传递
  7. 简述无人驾驶感知功能
  8. [Android]安卓简易计算器 (使用GridLayout)
  9. linux的4k播放器,【Linux1GB4K(3840*2160)电视播放器】Linux1GB4K(3840*2160)电视播放器报价及图片大全-列表版-ZOL中关村在线...
  10. Linux基础 - 服务管理(systemd)
  11. 中国好同事!帮程序猿跟姑娘表白,他们组了一支乐队
  12. Excel问题:excel表格的状态栏,不显示求和怎么办?
  13. Android点九图(.9.png)的特点和制
  14. 软考高级信息系统项目管理师如何备考?
  15. 设计模式-结构型模式(7)装饰者模式
  16. 怎样从旧版本激活TeamViewer新版本界面?
  17. 学习Emacs系列教程
  18. 从天问一号拍摄到高清火星影像图说起
  19. wwdc2019_wwdc 20愿望清单
  20. 钓鱼邮件翻倍:2021年Q4企业邮箱安全报告出炉

热门文章

  1. 手把手教学java微信公众号模版消息开发
  2. 短视频app源码开发,音视频混合的实现
  3. (六)MkDocs学习——部署文档
  4. 博途PLC 1200/1500PLC MODBUS-RTU通讯
  5. 三子棋(N子棋)小游戏超详解
  6. 黑马Android76期学习笔记01基础--day07--广播,有、无序广播、特殊广播接受者、样式和主题,this与context的区别、普通对话框,进度条对话框、帧动画
  7. 网盘搜索_就用网盘传奇-最有效的百度网盘搜索引擎
  8. hexo博客结合百度语音合成为你的博客添加欢迎语音
  9. 中小学学籍管理系统 v1.0.1.0 下载
  10. M1 芯片mac电脑下载应用运行闪退和没有权限的处理方法?