python做自动化如何定位动态元素_python-web自动化-元素定位

# -*- coding:utf-8 -*-

from selenium import webdriver

from selenium.webdriver.common.by import By

# 打开Chrome浏览器和百度网页

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

# 元素定位:id绝对唯一,name其次

# id 定位‘百度首页输入框’元素,并输入内容

driver.find_element_by_id('kw').send_keys('软件测试')

driver.find_element(By.ID,'kw').send_keys('软件测试')

# classname

# 返回符合条件的第一个元素

driver.find_element_by_class_name('s_ipt').send_keys('今日新闻')

# 返回符合条件的所有元素,返回值是list,每一个值都是一个Webelement对象

# 不能再后面用send.key(),报错AttributeError: 'list' object has no attribute 'send_keys'

driver.find_elements_by_class_name('s_ipt')

# tag_name

driver.find_element_by_tag_name('span')

driver.find_elements_by_tag_name('span')

#name

driver.find_element_by_name('wd').send_keys('成功')

driver.find_elements_by_name('wd')

#link_text

driver.find_element_by_link_text('贴吧').click()#完全匹配,一模一样

driver.find_element_by_partial_link_text('贴').click()#模糊匹配,包含即可

driver.find_elements_by_link_text('贴吧')#完全匹配,一模一样

driver.find_elements_by_partial_link_text('贴')

# css

driver.find_element_by_css_selector('')

# xpath

driver.find_element_by_xpath('')

# 1. 绝对定位(不推荐用) : 以/开头,父/子关系

# 2. 相对定位

# A:以//开头,在这个html页面中,有木有符合表达式的元素

# //标签名[@属性名称=属性值]

# //标签名[@属性名称=属性值 and @属性名称=属性值]

#B:层级定位

# C: 文本内容定位: //标签名[text()='文本值']

# D: 包含定位 : contains

# contains(@属性名,属性值) 例如 //a[contains(@class,"btns-enter-qq")]

# contains(text(),属性值)

# E: 轴定位(通过以下轴名称定位)

# ancestor : 祖先节点,包括父

# parent : 父节点

# preceding: 当前元素节点标签之前的所有节点(html页面先后顺序)

# preceding-slibling:当前元素节点标签之前的所有兄弟结点

# following: 当前元素节点标签之后的所有节点(html页面先后顺序)

# following-slibling:当前元素节点标签之后的所有兄弟结点

# /轴名称::节点名称[@属性名=属性值]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转ajax

1.什么是ajax? Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写。 2.ajax需要什么基础? HTML 用于建立 Web 表单并确定应用程序其他部分使用的字段。 JavaScript 代码是运行 Ajax 应用程序的核心代码,帮助改…

Spring MVC:验证器和@InitBinder

很难想象没有针对用户数据的验证逻辑的Web应用程序。 几乎所有用户的数据都有一些限制,例如,出生日期应由日,月,年等组成。SpringMVC拥有自己的数据验证解决方案,并且在Validator界面的帮助下可用。 Spring MVC Vali…

ADB 调试

1、adb简介 adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯&#xff…

python 函数式编程尾递归优化 day16

函数编程的特征: 1不可变:不用变量保存状态,不修改变量 #非函数式 a 1 def incr_test1():global a#一旦更改全局变量后后面再调用a就容易乱a 1return a incr_test1() print(a) def bar():print(from bar) def foo():print(from foo)return …

java英文试题_Java试题及答案英文版

1.Which two demonstrate an “is a” relationship? (Choose Two)A. public interface Person { }public class Employee extends Person { }B. public interface Shape { }public class Employee extends Sha pe { }C. public interface Color { }public class E…

margin折叠-从子元素margin-top影响父元素引出的问题

正在做一个手机端电商项目,顶部导航栈的布局是一个div包含一个子div,如果给在正常文档流中的子div一个垂直margin-top,神奇的现象出现了,两父子元素的边距没变,但父div跟着一起往下走了! html代码&#xff…

js时间转换

window.οnlοadfunction(){setInterval("mytime()",1000); } function mytime(){document.getElementById("time").innerHTML fmtDate(new Date()); } function fmtDate(obj){var date new Date(obj);var y 1900date.getYear();var m "0"(…

Lambdas:来到您附近的Java 8!

什么是Lambda? Lambda表达式是一种匿名函数,可以在方法中内联编写,并且可以在使用表达式的任何地方使用。 有时您可能会发现它们被称为闭包,尽管我在下面解释了对该参考的一些注意事项。 像普通的Java方法一样,它具有参…

CPU-内存-IO-网络调优

一、关于CPU 中央处理器调优 1、 CPU处理方式: 批处理,顺序处理请求。(切换次数少,吞吐量大)分时处理。(如同"独占",吞吐量小)(时间片,把请求分为一个一个的时间片,一片一片的分给CPU处理)我们现…

spark抽取mysql数据到hive_使用spark将内存中的数据写入到hive表中

使用spark将内存中的数据写入到hive表中hive-site.xmlhive.metastore.uristhrift://master:9083Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.javax.jdo.option.ConnectionURLjdbc:mysql://master:3306/metastore?createDa…

使用Merge存储引擎实现MySQL分表

使用Merge存储引擎实现MySQL分表 学习了:https://www.cnblogs.com/try-better-tomorrow/p/4987620.html https://www.cnblogs.com/xbq8080/p/6628034.html http://blog.csdn.net/java_bruce/article/details/71077985 https://www.cnblogs.com/johnnyzhang/articles…

Flexible 弹性盒子模型之CSS flex-shrink 属性

实例 让第二个元素收缩到其他元素的三分之一: 效果预览 div:nth-of-type(2){flex-shrink:3;}浏览器支持 表格中的数字表示支持该属性的第一个浏览器的版本号。 紧跟在 -webkit-, -ms- 或 -moz- 后的数字为支持该前缀属性的第一个版本。 属性 flex-shrink29.021.…

使用Base64

为什么要使用Base64?在设计这个编码的时候,我想设计人员最主要考虑了3个问题: 1.是否加密? 2.加密算法复杂程度和效率 3.如何处理传输? 加密是肯定的,但是加密的目的不是让用户发送非常安全的Email。这…

idea 新建的java项目没发run_IntelliJ IDEA创建普通的Java 项目及创建 Java 文件并运行的教程...

最近突然看到这篇几年前随手记录的文章,居然浏览量那么高。看来很多小伙伴也开始从 Eclipse 转到 IDEA,这里为了让大家更好的掌握 IDEA 的使用,我建议大家可以看看下面这个 IDEA 教程。首先,确保 IDEA 软件正确安装完成&#xff0…

如何在Maven中运行Ant目标?

maven-antrun-plugin允许我们在各种maven构建阶段中运行ant目标。 我将专门为具有开发环境的开发人员解释maven-antrun-plugin的非常实际的用法。 通常,使用maven build,您会将项目捆绑到war文件或ear文件中。 您可以使用maven-antrun-plugin直接将此w…

PHP基本知识

php为服务端的脚本语言&#xff0c;它的使用需要打开WAMP的开发环境&#xff0c;php也可以用制作网页的DW制作&#xff0c;文件需保存在wamp文件夹内的www文件夹里面。 嵌入php代码所使用的标签&#xff1a;<?php ?>&#xff1b; 运行php条件&#xff1a; 1.电脑上需…

java semaphore 等待_Java并发编程系列之Semaphore详解

简单介绍我们以饭店为例&#xff0c;假设饭店只有三个座位&#xff0c;一开始三个座位都是空的。这时如果同时来了三个客人&#xff0c;服务员人允许他们进去用餐&#xff0c;然后对外说暂无座位。后来的客人必须在门口等待&#xff0c;直到有客人离开。这时&#xff0c;如果有…

BZOJ1191: [HNOI2006]超级英雄Hero(二分图匹配)

Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5860 Solved: 2617[Submit][Status][Discuss]Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金。主持人问题准备了若干道题…

bzoj 2137: submultiple

Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 239 Solved: 113[Submit][Status][Discuss]Description 设函数g(N)表示N的约数个数。现在给出一个数M&#xff0c;求出所有M的约数x的g(x)的K次方和。 Input 第一行输入N&#xff0c;K。N表示M由前N小的素数组成。接下来N行&…

Java垃圾收集蒸馏

串行&#xff0c;并行&#xff0c;并发&#xff0c;CMS&#xff0c;G1&#xff0c;Young Gen&#xff0c;New Gen&#xff0c;Old Gen&#xff0c;Perm Gen&#xff0c;Eden&#xff0c;Tenured&#xff0c;Survivor Spaces&#xff0c;Safepoints和数百个JVM启动标志。 在尝试…