Python+Selenium自动化篇

本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。

0.元素定位方法主要有:

  • id定位:find_element_by_id(' ')
  • name定位:find_element_by_name(' ')
  • class定位:find_element_by_class_name(' ')
  • tag定位:find_element_by_tag_name(' ')
  • link定位:find_element_by_link_text(' ')
  • partial link定位:find_element_by_partial_link_text(' ')
  • xpath定位:find_element_by_xpath(' ')
  • CSS定位:find_element_by_css_selector(' ')
  • By定位

1.利用ID定位元素

1from selenium import webdriver 2# 设置浏览器 3browser = webdriver.Chrome() 4#设置浏览器大小:全屏 5browser.maximize_window() 6#打开百度首页 7browser.get('https://www.baidu.com/') 8#定位百度搜索输入框之前,先分析下它的html结构 9#<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off"> 10#发现它的 id="kw" ,接下来我们就通过id进行定位 11try: 12 browser.find_element_by_id('kw').send_keys('哈哈') 13 print('test post:id') 14except Exception as e: 15 print('test fail') 16 17#输出内容:test post:id

2.利用name定位元素

1from selenium import webdriver 2browser = webdriver.Chrome() 3browser.maximize_window() 4 5#打开百度首页 6browser.get('https://www.baidu.com/') 7#搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off"> 8# 根据name属性定位 9try: 10 browser.find_element_by_name('wd').send_keys('哈哈') 11 print('test post:name') 12except Exception as e: 13 print('test fail') 14 15#输出内容:test post:name

3.利用class定位元素

1from selenium import webdriver 2browser = webdriver.Chrome() 3browser.maximize_window() 4 5#打开百度首页 6browser.get('https://www.baidu.com/') 7#搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off"> 8# 根据class_name属性定位 9try: 10 browser.find_element_by_class_name('s_ipt').send_keys('哈哈') 11 print('test post:class_name') 12except Exception as e: 13 print('test fail') 14 15#输出内容:test post:class_name

4.利用tag_name定位元素

1from selenium import webdriver 2browser = webdriver.Chrome() 3browser.maximize_window() 4 5#打开百度首页 6browser.get('https://www.baidu.com/') 7#搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off"> 8# 根据tag_name属性定位 9try: 10 browser.find_element_by_tag_name('form') 11 print('test post:tag_name') 12except Exception as e: 13 print('test fail') 14 15#输出内容:test post:tag_name

5.利用link_text定位元素

  • link_text:根据跳转链接上面的文字来定位元素。

    from selenium import webdriver browser = webdriver.Chrome() browser.maximize_window()

    #打开百度首页 browser.get('https://www.baidu.com/')

    根据link_text属性定位元素“新闻”,然后点击按钮

    try: browser.find_element_by_link_text('新闻').click() print('test post:tag_name') except Exception as e: print('test fail')

    #输出内容:test post:link_text

6.利用partial_link_text定位元素

  • 和link_text定位元素差不多,partial_link_text是通过文字信息中的部分字段来定位元素。

    from selenium import webdriver browser = webdriver.Chrome() browser.maximize_window()

    #打开百度首页 browser.get('https://www.baidu.com/')

    根据partial_link_text属性定位元素“新闻”,然后点击按钮

    try: browser.find_element_by_partial_link_text('闻').click() print('test post:tag_name') except Exception as e: print('test fail')

    #输出内容:test post:partial_link_text

7.利用xpath定位元素

1from selenium import webdriver 2browser = webdriver.Chrome() 3browser.maximize_window() 4 5#打开百度首页 6browser.get('https://www.baidu.com/') 7# 根据xpath定位元素 8try: 9 browser.find_element_by_xpath('//*[@id="kw"]').send_keys('哈哈') 10 print('test post:xpath') 11except Exception as e: 12 print('test fail') 13 14#输出内容:test post:xpath

8.利用CSS定位页面元素

1from selenium import webdriver 2browser = webdriver.Chrome() 3browser.maximize_window() 4 5#打开百度首页 6browser.get('https://www.baidu.com/') 7# 根据css_selector定位元素 8try: 9 browser.find_element_by_css_selector('#kw').send_keys('哈哈') 10 print('test post:xpath') 11except Exception as e: 12 print('test fail') 13 14#输出内容:test post:css_selector

9.By定位

  • 除了使用上面的方法外,还可以利用find_element()方法,通过By来定位元素。

  • 使用之前需要导入By类:

    #导入By类 from selenium.webdriver.common.by import By

  • 那么上面的方法还可以改写为:

    browser.find_element(By.ID,'kw') browser.find_element(By.NAME,'wd') browser.find_element(By.CLASS_NAME,'s_ipt') browser.find_element(By.TAG_NAME,'form') browser.find_element(By.LINK_TEXT,'新闻') browser.find_element(By.PARTIAL_LINK_TEXT,'闻') browser.find_element(By.XPATH,'//*[@id="kw"]') browser.find_element(By.CSS_SELECTOR,'#kw')

点赞
收藏

评论区

加载中...

相关推荐

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

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

Python+Selenium自动化篇 - HelloWorld