千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > selenium的使用

selenium的使用

来源:千锋教育
发布人:qyf
时间: 2022-09-08 17:57:08 1662631028

selenium的使用

  所谓模拟浏览器基本就是下面的流程:

  请求

  显示页面

  查找元素

  点击可点击元素

  所以如何使用selenium找到页面中的标签,进而触发标签事件,就会变的尤为重要。

  1. selenium选择器

  要想定位页面的元素,selenium也提供了一系列的方法。

  1.通过标签id属性进行定位

  browser.find_element_by_id('kw') # 其中kw便是页面中某个元素的id值

  2.通过标签name属性进行定位

  # 两种方式是一样的

  browser.find_element_by_name("wd") # 其中wd是页面中某个元素的name值

  3.通过标签名进行定位

  browser.find_element_by_tag_name("img") # img参数表示的就是图片标签img

  4.通过CSS查找方式进行定位

  browser.find_elements_by_css_selector("#kw") # 根据选择器进行定位查找,其中#kw表示的是id选择器名称是kw的

  5.通过xpath方式定位

  browser.find_element_by_xpath('//*[@id="kw"]') # 参数即是xpath的语法

  6.通过搜索 页面中 链接进行定位

  有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link

  browser.find_element_by_link_text("设置")

  通过搜索 页面中 链接进行定位 ,可以支持模糊匹配**

  browser.find_element_by_partial_link_text("百度") # 查找页面所有的含有百度的文字链接

  2.selenium显示等待和隐式等待

  显示等待:就是明确要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,就会跳出异常Exception

  操作格式:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

  WebDriverWait()一般由until()或 untilnot()方法配合使用

  until(method, message=' '):调用该方法提供的驱动程序作为一个参数,直到返回值为True

  `untilnot(method, message=' ')`:调用该方法提供的驱动程序作为一个参数,直到返回值为False

  from selenium import webdriver

  from selenium.webdriver.support.ui import WebDriverWait

  from selenium.webdriver.support import expected_conditions as EC

  from selenium.webdriver.common.by import By

  driver = webdriver.chrome()

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

  element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, "kw")))

  element.send_keys('selenium')

  隐式等待:就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。

  注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部断的刷新页面去寻找我们需要的元素

  driver.implicitly_wait() 默认设置为0

  例如: driver.implicitly_wait(10) 。如果元素在10s内定位到了,继续执行。如果定位不到,将以循环方式判断元素是否被定位到。如果在10s内没有定位到,则抛出异常

  from selenium import webdriver

  driver = webdriver.chrome()

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

  # 隐式等待10秒

  driver.implicitly_wait(10)

  另外还有一种就是我们常用的sleep,我们称为:强制等待。

  有时候我们希望脚本在执行到某一位置时暂停一段时间等待页面加载,这时可以使用sleep()方法。sleep()方法会固定休眠一定的时长,然后再继续执行。sleep()方法默认参数以秒为单位。

  from time import sleep

  from selenium import webdriver

  driver = webdriver.chrome()

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

  # 强制休眠2秒

  sleep(2)

  driver.find_element_by_id("kw").send_keys("selenium")

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT