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 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力2 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A2 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
疯华整猫3 小时前
被杀掉之后:我把 Android 的「唤起 + 常驻」重做了一遍
前端·面试·架构
小lo想吃棒棒糖3 小时前
把机器人训练从 GPU 搬到昇腾 NPU:启元 Q1 起身动作 PPO 训练全记录
python·机器人·昇腾·启元机器人
Thanks_ks3 小时前
【第 006 讲】搭建 PyCharm 开发环境:PyCharm 的下载与安装 | 初始设置与常用配置
ide·python·pycharm·开发工具·jetbrains·开发环境·集成开发环境
lisw053 小时前
基于神经网络的机器人导航系统的设计与执行!
神经网络·机器人·自动化
青少儿编程课堂4 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
严肃小白兔4 小时前
Cloudflare 更新 API Token 管理:从最小权限到自动化凭据安全
网络·安全·自动化
tellmewhoisi4 小时前
nlp:知识库检索和dify知识库创建
python·自然语言处理