Selenium3+python几种定位元素的方法

学习小结:

这里使用ChromeV73+web driver 2.46

1 1 #几种定位方式: 2 2 #Autotest.py 3 3 from selenium import webdriver 4 4 from selenium.webdriver.common.by import By 5 5 import time 6 6 7 7 dr = webdriver.Chrome() 8 8 dr.get("http://www.baidu.com") 9 9 1010 #通过各种元素:name,id,class,tag,text 1111 1212 dr.find_element_by_name('wd').send_keys('apple') #name 1313 dr.find_element_by_id('su').click #id 1414 dr.find_element_by_class_name('s_ipt').send_keys('apple') #class 1515 dr.find_element_by_tag_name('') #tag 1616 dr.find_element_by_link_text('新闻').click() #通过文字链接打开下级页面 1717 dr.find_element_by_partial_link_text('一段很长的').click()#通过长文字的一部分定位元素 1818 1919 2020 #从一组相同标签的元素里找到目标元素 2121 inputs = dr.find_elements_by_tag_name('input') 2222 for i in inputs: 2323 if i.get_attribute('name') == "wd": 2424 i.send_keys('apple') 2525 dr.find_element_by_id('su').click() 2626 2727 2828 #xpath定位元素: 2929 dr.find_element_by_xpath("//input[@id='kw']").send_keys("天气") #xpath定位元素:input下面: id='kw' 3030 dr.find_element_by_xpath("//*[@id='kw']").send_keys("天气") #xpath定位元素:*=查找所有元素: id='kw' 3131 3232 #父标签form,id='form' 下面第1个标签/span下面第1/input(如果要定位的span是第二个则为/span[2]3333 dr.find_element_by_xpath("//form[@id='form']/span[1]/input[1]").send_keys("天气") #这里【1】可以省略,只是为了理解 3434 3535 dr.find_element_by_xpath("/html/body/div/div/div/div/div/form/span/input").send_keys('天气') #xpath: 绝对路径定位元素 3636 3737 #css选择器定位: 3838 dr.find_element_by_css_selector('.s_ipt').send_keys("天气") #.class 3939 dr.find_element_by_css_selector('#kw').send_keys("天气") #ID 4040 dr.find_element_by_css_selector('input[maxlength="255"]').send_keys("天气") 4141 4242 #下面这个意思是css定位:标签form(.表示classclass='fm' 下面的子标签span 的 子标签 input的 id='kw'(#表示id) 4343 dr.find_element_by_css_selector('form.fm > span > input#kw').send_keys("天气") 4444 4545 4646 #By类定位,需要引入By类 4747 #dr.find_element(By.ID,'kw').send_keys('天气') 4848 #dr.find_element(By.NAME,'wd').send_keys('天气') 4949 #dr.find_element(By.CLASS_NAME,'s_ipt').send_keys('天气') 5050 #dr.find_element(By.TAG_NAME,'input').send_keys('天气') #这里定位不到,需要类似上面的for循环 5151 #dr.find_element(By.LINK_TEXT,u'新闻').click() 5252 #dr.find_element(By.PARTIAL_LINK_TEXT,u'新').click() 5353 #dr.find_element(By.XPATH,"//*[@class='s_ipt']").send_keys('天气') 5454 #dr.find_element(By.CSS_SELECTOR,'form.fm > span > input#kw').send_keys('天气') 5555 5656 time.sleep(3) 5757 dr.quit() 5858 5959

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )