一:前言

很多读者可能发现学习selenium时,经常遇见find_element(By.ID,"id")这种写法。
发现了没有,有个叫“By”的单词。因此,笔者今天来讲解一下它是何物。

二:正文

By模块,用来定位元素的。和另外一个find的功能一样,就是写法不一样。

  1. find_element(By.ID,“id”) 等价于 find_element_by_id -->根据id属性定位

  2. find_element(By.XPATH,"//div[@name=‘csdn’]") 等价于
    find_element_by_xpath -->根据XPATH路径来定位

  3. find_element(By.LINK_TEXT,“text”) 等价于 findfind_element_by_link_text
    –>根据超链接标签匹配(精准匹配,匹配a标签的全部文本内容。)

  4. find_element(By.PARTIAL_LINK,“partialtext”) 等价于 find_element_by_partial_link_text -->根据超链接标签匹配(非精准匹配,匹配a标签的部分文本内容。)

  5. find_element(By.ID,“name”) 等价于 find_element_by_name -->根据name属性定位

  6. find_element(By.TAG_NAME,“input”) 等价于 find_element_by_tag_name -->根据标签名定位,例如input标签

  7. find_element(By.CLASS_NAME,“classname”) 等价于 find_element_by_class_name -->根据类名属性定位

  8. find_element(By.CSS,"#id") 等价于 find_element_by_css_selector -->根据css选择器名字定位

当element变成elements时,写法不变,就是返回的元素由返回单个元素变成了返回一个数组。

小案例:运用到了By.XPATH、By.CLASS_NAME、By.LINK_TEXT

#!/usr/bin/env python3
# -*- coding:utf-8 -*-from selenium import webdriver
from selenium.webdriver.common.by import By
import time#获取驱动
driver = webdriver.Chrome()
#确定目标网址
driver.get("https://fanyi.qq.com/")
#窗口最大化
driver.maximize_window()
#隐性等待3秒,打不开页面才报错
driver.implicitly_wait(3)
#使用XPATH查找
target_area = driver.find_element(By.XPATH,"//div[@class='textpanel-source-textarea']/textarea")
time.sleep(2)
#输入翻译的内容
target_area.send_keys('HelloWorld!')
time.sleep(2)
#根据类名查找
driver.find_element(By.CLASS_NAME,"language-translate-button").click()
time.sleep(2)
#精准匹配A标签
driver.find_element(By.LINK_TEXT,"人工翻译").click()
time.sleep(3)
#退出页面
driver.quit()

Selenium中的By模块相关推荐

  1. Selenium中的EC模块

    一:前言 最近看selenium的一些教程文章,EC这个词出现的频率比较高.刚刚接触selenium的人可能会懵,所以,笔者认为得讲解一下这个词. 二:正文 EC,全称为expected_condit ...

  2. Selenium基础 — Selenium中的expected_conditions模块(一)

    1.expected_conditions模块介绍 expected_conditions是Selenium的一个模块,主要用于对页面元素的加载进行判断,包括元素是否存在,可点击等等. Expecte ...

  3. js 判断剪切板内容是否为text_Python+selenium自动化之EC模块之text_to_be_present_in_element...

    之前的文章介绍selenium中一个模块expected_conditions的title_is和title_contains方法. title_is:判断当前页面的title是否完全等于(==)预期 ...

  4. selenium中的三种等待方式以及显示等待和隐式等待区别

    selenium的三种等待方式 selenium中一般分为三种等待方式:显示等待.隐式等待.sleep强制等待 1.显示等待(有条件) 程序提前指定等待条件和等待时间,在查找元素时,判断规定时间内是否 ...

  5. 在idea中移除子模块Moudle后重新导入

    在idea中移除模块并不是真正的移除,重新添加 1.按快捷键:crtl+shift+alt+s 打开 Project Structure 2.点击左侧Moudles 3.点击+号然后点击 import ...

  6. 在Ubuntu 16.04.5 LTS上利用python 2.7中的PIL模块智能等比例压缩过大的图片集实操

    需求 有时候自媒体创作写稿时难免遇到大规模压缩某个文件夹内的图片的情况,通常我们可以使用一些批量压缩的工具来处理,但我觉得,这是小白的做法,对于我们这些经验丰富的老司机来说,使用代码来处理,将是一件高 ...

  7. 在Ubuntu 16.04.5 LTS上利用python中的PIL模块压缩一百多兆的单张图片实操

    在前面的博文中,我将300多张电影海报拼接为了一张103MB的巨幅图片,我想拿它做电脑桌面(1080P),但是这么多的图片,存储和加载是个麻烦事儿,需要将它压缩到几MB大小. 在Ubuntu 16.0 ...

  8. 深度神经网络中的Inception模块介绍

    深度神经网络(Deep Neural Networks, DNN)或深度卷积网络中的Inception模块是由Google的Christian Szegedy等人提出,包括Inception-v1.I ...

  9. Pycharm中导入requests模块详解

    这篇文章主要介绍了教你如何在Pycharm中导入requests模块,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 1.找到python的安装路径: 如果忘 ...

最新文章

  1. leetcode算法题--丑数 II★
  2. 1、ios开发之 内购
  3. matlab衰减指数的程序是,衰减方程的数值计算程序(matlab和fortran)
  4. Excel字符串截取(leftrightmid)
  5. 回忆2020年,这一年有你们真好~
  6. UVa 642 - Word Amalgamation
  7. 用MATLAB敲qda,LOMO_XQDA
  8. 『DL笔记』预训练(pre-training/trained)与微调(fine tuning)
  9. 1000道最新高频Java面试题,覆盖25个技术栈(多线程、JVM、高并发、spring、微服务、kafka,redis、分布式)从底层原理到架构!
  10. matlab bsxfun
  11. 10 年老程序员教你甩锅必杀技,论【如何优雅的甩锅】
  12. 返回值取vector容器的前n个元素
  13. [32期] 想学PHP来兄弟连是正确的选择 初识兄弟连三周
  14. 大华(华瑞)MVP常用组件的使用
  15. python安装包时出现的一些问题及解决方法
  16. dubbo-源码环境搭建
  17. 腾讯空间、新浪微博、腾讯微博登录接口的使用
  18. C/C++ 实现内存特征码搜索
  19. 如何在“动物杂交:新视野”中招募新村民
  20. 【职场】技术人员的自我运营之道

热门文章

  1. python爬取网店数据_如何爬虫天猫店铺数据python
  2. 淘宝/天猫获取卖出的商品订单列表API接口,店铺订单API接口,店铺订单详情API接口
  3. STM32中的程序在RAM还是FLASH里运行?
  4. java image写入文件,从文件读取/写入图像到BufferedImage的最快方法?
  5. 澳洲大学学术不端要怎么进行申诉呢
  6. MySQL编程实战三之求任务执行批次号
  7. A006-AndroidManifest.xml解析
  8. Fast and Provably Good Seedings for k-Means阅读笔记
  9. 7种方法实现数组去重
  10. 计算机树表查找算法的适用场景,利用基于R-树连续最近邻查询算法来渲染雨滴,形成了逼真的下雨天场景图...