Python&Selenium
2020-06-07 16:05:18   0  举报             
     
         
 AI智能生成
  后续持续更新
    作者其他创作
 大纲/内容
  定位方式    
     by_id( )  
     by_name( )  
     by_tag_name( )  
     by_class_name( )  
     by_link_Text( )  
     by_partial_link_Text( )  
     by_xpath( )  
     by.css_selector( )  
     根据已有属性定位    
     driver.find_element_by_id( )    
     根据id定位  
     driver.find_element_by_name( )    
     根据name定位  
     driver.find_element_by_tag_name( )  
     driver.find_element_by_class_name( )  
     driver.find_element_by_link_text( )  
     driver.find_element_by_partial_link_text( )    
     定位链接的部分文字  
     driver.find_elements_by_tag_name( )    
     用复数的方式搜索出标签列表;然后遍历列表定位  
     路径定位    
     格式:driver.find_element_by_xpath( )  
     绝对路径:一层层写,结合ctrl+f使用    
     以/为标记,从html/body开始  
     劣势:一旦界面元素发生变化句得修改脚本  
     相对路径:选择属性--右键--copy--xpath    
     以//为标记  
     以*作为节点通配符  
     以@属性名和[属性名=‘属性值’]  
     以[ ]获取子元素位置;元素定位时以1开始  
     以 | 表示选择多个并列的路径://food/name | //food/price  
     同一层的两个属性,中间以(空格)隔开:("input[@type='submit'] [@name='su']")  
     or的选择:find_element_by_xpath("//input[@type='submit' or @name='su']")  
     CSS选择器    
     格式:driver.find_element_by_css_selector( )  
     根据ID定位:    
     用#表示id:id=test-->#test  
     根据class定位:    
     用.(点)表示class:class=test-->.test  
     根据标签+ID:    
     用#表示id:<input id="test">-->input#test  
     根据标签+class:    
     用.(点)表示class:<input class="test">-->input.test  
     根据元素属性匹配    
     精准匹配    
     <input id=""test> -->input[id='test']  
     <input id=""test  name=test11> -->input[id='test']  [name='test11']  
     模糊匹配    
     用 ^符号表示xx开头的元素匹配<input id='szy'>-->input[id ^='s']  
     用$符号表示以xx结尾的元素匹配  <input id='szy'>-->input[id $='y']  
     用*符号表示包含xx(中间位置)内容的元素匹配  <input id='szy'>-->input[id *='z']  
     ^  $  *可以代表单个字符和字符串  
     子元素:>    
     A>B:根据标签定位B是A的所有儿子辈  
     A(空格)C:根据标签定位,C是A的所有子孙辈  
     子元素:nth-child( )    
     第一个后代元素:firdt-child  
     最后一个后代元素:last-child  
     其他标签定位:nth-child(n)来定位-->如option:nth-child(3):定位标签option中的第三个后代元素  
     iframe框架    
     driver.switch_to.frame( );进入iframe框架;( )括号中为iframe中的name值进行定位;也可以用定位方法进行定位
  
     退出框架:driver._switch_to.default_content( )  
     页面查找iframe:元素中ctrl+f 查找iframe  
     智能等待    
     强制等待    
     需要导入的包:import time  
     格式:time.sleep( )  
     隐式等待    
     driver.implicitly_wait( );针对driver  
     显示等待:针对于某个元素    
     需要导入的包    
     from selenium.webdriver.common.by import By  
     from selenium.webdriver.support.ui import WebDriverWait  
     from selenium.webdriver.support import expected_conditions as EC  
     和until连用;代表一直等待,直到某个元素可见  
     和not nutil连用;判断某个元素直到不存在  
     presence_of_element_located( )判断页面某个元素在页面中存在  
     认识Python    
     是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言  
     语言优势    
     简单、易学  
     具有丰富和强大的库  
     主要特点    
     面向对象  
     动态类型  
     跨平台  
     开发工具    
     PyCharm  
     数据类型    
     数值型    
     int整型  
     float浮点型  
     str    
     字符串,用''(单引号)、""(双引号)或''''''(三引号)表示  
     str = ‘name';索引[ ];print(str[1]);切片[start:end]左含右不含  
     常用函数    
     split():切割  
     replace():替换  
     strip():去掉前后空格    
     lstrip()--去掉左边空格  
     rstrip()--去掉右边空格  
     bool    
     布尔类型,取值True或False  
     list    
     列表[1,2,'su'];可以为各种数据类型,可以索引,切片可以增删改操作  
     常用函数    
     list.append(值);增加元素;在列表中直接追加
  
     list.insert(位置,值);在指定位置插入  
     list.pop(下标);通过下标删除元素值  
     del alist[下标];通过下标删除元素  
     list.remove(值);直接删除某个值;不会重复删除  
     tuple    
     元祖( );数据类型可以任意,一个元素的元组需要有,逗号隔开,元组不能增,删,改;相当于不可变的list  
     tuple=(2,3,"susu",[5,'feng'])  
     dict    
     字典{ };key-value形式;没有索引,切片的操作,但是可以增删改操作
  
     dict1={"name":"小刘","age":18}  
     类型转换    
     通过函数方式,各个数据类型间可灵活转换  
     转换函数:int( );str( );list( );tuple( );  
     运算符    
     比较运算符    
     算术运算符:+、-、*、/(除)、%(取模)、**(幂运算)、//(整除)  
     ==、!=(不等于)、>、<、>=、<=  
     赋值运算符    
     =、+=、-=、/=、%=、**=  
     位运算符    
     &(与)、|(或)  
     逻辑运算符    
     and、or、not  
     成员运算符    
     如果在指定的序列中找到值返回True;否则返回False  
     in、not  in   
     条件语句    
     if....else    满足条件就执行if下面语句,不满足就执行else下面的语句  
     if....elif...else   多分支结构的条件判断  
     if条件判断中可以进行嵌套  
     当条件为:非0,非空值,非空列表,非空元组,,该if结果均为真True  
     循环语句    
     while循环    
     while 条件表达式:
循环体
    循环体
 斐波那列数列:  
     for循环;遍历手法    
     for..in...  
      range(1,101):左含右不含  
     break:跳出本层循环  
     continue:结束本次循环  
     面向对象    
     封装    
     类    
     使用class关键字声明  
     举例:  
     方法    
     实例方法    
     与类的某个实例变量相关  
     第一个参数必须是当前对象,通常写作self  
     静态方法
    
     与类相关,但不需要任何类或实例变量  
     使用@staticmethod装饰器声明  
     属性    
     实例属性    
     在实例方法中定义的属性,通过实例访问  
     类属性    
     直接在类中定义(不在方法内)的属性,可通过类名直接访问  
     私有属性    
     变量名前加“__”两个下划线  
     公有属性    
     默认定义的就是公有属性  
     模块、包导入    
     安装第三方python库    
     pip install 库名  
     pip install –i https://pypi.tuna.tsinghua.edu.cn/simple 库名  
     导入模块:import 模块名  
     不同的包里调用不同的模块: from 包名 import 模块名  
     不同的包里调用相同的模块,就近原则,如果需要调用就用别名as  
     如果导入同级目录的多个模块import多个模块用 逗号, 隔开  
     只导入不同包里的模块函数 from 包名.模块名 import 函数名  
    
 
 
 
 
  0 条评论
 下一页