Selenium 可以驱动浏览器完成各种操作,比如填充表单、模拟点击等。比如,我们想要完成向某个输入框输入文字的操作,总需要知道这个输入框在哪里吧?而 Selenium 提供了一系列查找节点的方法,我们可以用这些方法来获取想要的节点,以便下一步执行一些动作或者提取信息。

如下,我们通过右键点击搜索框 --- 检查,提取淘宝页面中搜索框这个节点:

可以看到 id 、name 、class 等属性,那么在 Python 中可以这样来查找节点:

说明:find_element()默认只能获取匹配到第一个节点,而find_elements()可以获取所有节点,以列表的形式返回

from selenium import webdriver
from selenium.webdriver.common.by import By browser = webdriver.Chrome()
browser.get("https://www.taobao.com") input = browser.find_element_by_id("q") # 通过ID属性查找节点
input = browser.find_element_by_name("q") # 通过Name属性查找节点
input = browser.find_element_by_class_name('search-combobox-input-wrap') # 通过Class属性查找节点
input = browser.find_element_by_css_selector("#q") # 通过CSS选择器查找节点
input = browser.find_element_by_xpath("//*[@id='q']") # 通过XPath表达式查找节点 input = browser.find_element(By.ID, "q") # 通过ID属性查找节点
input = browser.find_element(By.NAME, "q") # 通过Name属性查找节点
input = browser.find_element(CLASS_NAME, "search-combobox-input-wrap") # 通过Class属性查找节点
input = browser.find_element(By.CSS_SELECTOR, "q") # 通过CSS选择器查找节点
input = browser.find_element(By.XPATH, "//*[@id='q']") # 通过XPath表达式查找节点

input = browser.find_elements(By.ID, "q") # 通过ID属性查找多个节点
input = browser.find_elements(By.NAME, "q") # 通过Name属性查找多个节点
input = browser.find_elements(CLASS_NAME, "search-combobox-input-wrap") # 通过Class属性查找多个节点
input = browser.find_elements(By.CSS_SELECTOR, "q") # 通过CSS选择器查找多个节点
input = browser.find_elements(By.XPATH, "//*[@id='q']") # 通过XPath表达式查找多个节点 input.send_keys("iPhone") # 找到节点之后就可以进行下一步操作
input.click()
browser.close()

Selenium 查找节点的更多相关文章

  1. DOM操作 ——如何添加、移除、移动、复制、创建和查找节点等。

    DOM操作 --如何添加.移除.移动.复制.创建和查找节点等. (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个 ...

  2. (一)DOM 常用操作 —— “查找”节点

    在 DOM 树中,如果想要操作一个节点,那么首先要"查找"到这个节点.查找节点的方法由 Document 接口定义,而该接口由 JavaScript 中的 document 对象实 ...

  3. javasript 的DOM 节点操作:创建,插入,删除,复制以及查找节点

    DOM 含义: DOM 是文档对象模型(Document Object Model) 是一种基于浏览器编程的一套API 接口,我W3C 出台推荐的标准.其赋予了JS 操作节点的能力,当网页被加载时,浏 ...

  4. JS中的DOM操作怎样添加、移除、移动、复制、创建和查找节点

    DOM操作怎样添加.移除.移动.复制.创建和查找节点? (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元 ...

  5. Dom4j 查找节点或属性

    Dom4j  查找节点或属性 例如 1 查找下面xml中的student节点的age属性, xpathstr="/students/student/@age"; 2 查找下面xml ...

  6. cocoscreator查找节点的方法 (跟jquery find一样)

    var each = function(object, callback) { var type = (function() { switch (object.constructor) { case ...

  7. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  8. js的DOM节点操作:创建 ,插入,删除,复制,查找节点

    DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,是W3C出台的推荐标准.其赋予了JS操作节点的能力.当网页被加载时,浏览器就会创建页面的 ...

  9. jQuery中的查找节点、创建节点、插入节点、删除节点、替换节点、复制节点操作方法

    jQuery操作节点我们可以分六点来讲,查找节点.创建节点.插入节点.删除节点.替换节点.复制节点. 一.查找节点 text() - 设置或返回所选元素的文本内容   ,html() - 设置或返回所 ...

随机推荐

  1. spatial transformer networks 这篇论文

    大致看了看这个paper, 很novel. 我的观点: 在traditional convolutional neural netwoks 中,我们通常会depend 于 extracting fea ...

  2. perl学习-运算符添加引号

    这个比较有意思,在其它语言中好像没有特别提到 Perl 引号运算符如下表所示. 运算符描述实例 q{ }为字符串添加单引号q{abcd} 结果为 'abcd' qq{ }为字符串添加双引号qq{abc ...

  3. FusionCancer-人类癌症相关的融合基因的数据库

    RNA-seq 测序可以用于融合基因的发现,在过去的十几年里,RNA-seq 测序数据不断增加,发现的融合基因的数据也不断增加: FusionCancer 是一个人类癌症相关的融合基因的数据库,利用N ...

  4. php 统计fasta 序列长度和GC含量

    最近php7的消息铺天盖地, 忍不住想尝试下.星期天看了下语法, 写个小脚本练下手: 这个脚本读取fasta 文件, 输出序列的长度和GC含量: <?php $fasta = "tes ...

  5. log4net 日志配置及使用

    一.log4net按照不同的[LEVEL]级别输出到不同文件 <log4net> <!--错误日志:::记录错误日志--> <!--按日期分割日志文件 一天一个--> ...

  6. YII2 搭建redis拓展

    安装redis扩展: 1.通过composer进行安装,到项目根目录cmd运行(推荐) php composer.phar require --prefer-dist yiisoft/yii2-red ...

  7. kafka基本概念

    介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语:Kafka将消息以to ...

  8. springboot+shiro+redis(集群redis版)整合教程

    相关教程: 1. springboot+shiro整合教程 2. springboot+shiro+redis(单机redis版)整合教程 3.springboot+shiro+redis(单机red ...

  9. spark 修改分区(存储结果需要)

    修改分区就行了val rdd1 = sc.parallelize(Array(1,2,3,4,5,6,7,8))#  查看分区数rdd1.partitions.length# 改成1个分区val rd ...

  10. mysql日期问题

    1.在java中,在当前时间的基础上增加30天.Date d = new Date();   SimpleDateFormat df = new SimpleDateFormat("yyyy ...