Python的web自动化学习(四)Selenium的显性等待(元素定位)

引言:

Selenium的显性等待,其常用的定位方法介绍,后面持续更细具体用法

示例如下:

python 复制代码
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

ID定位

python 复制代码
wait.until(EC.visibility_of_element_located((By.ID, 'kw')))

Name定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.NAME, 'wd')))

Class定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 's_ipt')))

Tag定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.TAG_NAME, 'element_tag')))

Link Text定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.LINK_TEXT, 'link_text')))

Partial Link Text定位: Link Text包含定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.PARTIAL_LINK_TEXT, 'partial_link_text')))

CSS Selector定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'css_selector')))

XPath定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, 'xpath')))

层级定位:

python 复制代码
parent_element = driver.find_element(By.XPATH, 'parent_xpath')
wait.until(EC.visibility_of_element_located((By.XPATH, 'child_xpath')), parent_element)

多个条件组合定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, 'xpath')) and EC.element_to_be_clickable((By.ID, 'element_id')))

标签属性定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, '//tag[@attribute="value"]')))

元素文本定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[text()="element_text"]')))

元素属性值包含定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '[attribute*="value"]')))

元素属性值以定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '[attribute^="value"]')))

元素属性值结尾定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '[attribute$="value"]')))

元素文本包含定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[contains(text(), "element_text")]')))

属性值正则匹配定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[matches(@attribute, "regex_pattern")]')))

子元素定位:

python 复制代码
parent_element = driver.find_element(By.XPATH, 'parent_xpath')
wait.until(EC.visibility_of_element_located((By.XPATH, 'child_xpath')), parent_element)

元素索引定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, '(//tag)[index]')))

兄弟元素定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, 'preceding-sibling::tag')))

父元素定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, 'parent::tag')))

祖先元素定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, 'ancestor::tag')))

子元素索引定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.XPATH, 'parent_xpath/tag[index]')))

元素属性值不等于定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '[attribute!="value"]')))

元素属性值包含多个定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '[attribute~="value1"][attribute~="value2"]')))

元素属性值开始定位:

python 复制代码
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '[attribute^="value"]')))

以上是常用selenium的基本定位的方法,后面持续更新具体结合实际操作用法

相关推荐
亿牛云爬虫专家2 分钟前
优化数据的抓取规则:减少无效请求
python·数据采集·多线程·爬虫代理·数据抓取·代理ip·房价
程序媛堆堆4 分钟前
解决NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+问题
python
DreamByte7 分钟前
Python Tkinter小程序
开发语言·python·小程序
Python极客之家8 分钟前
基于深度学习的眼部疾病检测识别系统
人工智能·python·深度学习·毕业设计·卷积神经网络
卡兰芙的微笑13 分钟前
get_property --Cmakelist之中
前端·数据库·编辑器
Bigcrab__14 分钟前
Python3网络爬虫开发实战(15)Scrapy 框架的使用(第一版)
爬虫·python·scrapy
覆水难收呀15 分钟前
三、(JS)JS中常见的表单事件
开发语言·前端·javascript
猿来如此呀23 分钟前
运行npm install 时,卡在sill idealTree buildDeps没有反应
前端·npm·node.js
hw_happy28 分钟前
解决 npm ERR! node-sass 和 gyp ERR! node-gyp 报错问题
前端·npm·sass
FHKHH33 分钟前
计算机网络第二章:作业 1: Web 服务器
服务器·前端·计算机网络