ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

selenium python 学习笔记之六 元素等待及下拉框、弹出窗、滚动条操作

2021-08-15 15:01:48  阅读:234  来源: 互联网

标签:E8% python 元素 driver 滚动条 E5% 等待 下拉框 select


一、元素等待

  HTML 加载需要时间,影响HTML加载的因素

  -服务器性能

  -网络速度

  -本身电脑的配置

1、隐式等待

  概念:首先要等待整个页面加载完成,再去进行元素定位,如果在定位过程中找到了元素,直接返回该元素,继续后面的操作,如果在指定的时间内没有找到该元素,那么每隔0.5s 再去找,如果超过了指定时间就会抛出NoSuchElementException的异常错误。

  隐式等待的实现方式:

    driver.implicity_wait(timeout) # timeout 表示的是最长的等待时间 单位为s

    隐式等待只需要设置一次,对所有的元素都生效

2、显示等待

  概念:

    定位指定元素时,如果能找到该元素,那么久直接返回该元素,如果找不到,每隔指定的时间再去定位该元素,如果超出最长等待时间,那么久抛出TimeOutException。

  显示等待的实现方式:

  WebDriverWait(driver,timeout,poll_frequency=0.5).until(lamada x:x.find_element(By.ID,'userA'))

  WebDriverWait() 等待类  需要导入

  driver 指的是浏览器的实例对象

  timeout 表示的是最长等待时间

  poll_frequency 表示的是检查的时间间隔。默认时间是0.5s

  后面跟上until方法,在until方法跟上匿名函数实现元素定位

 

  显示等待和隐式等待的区别:

    1、抛出的异常不一样,隐式等待超时报的是 NoSuchElementException 显示等待超时,上报的额是 TimeOutException

    2、作用域不一样,隐式等待对所有的元素定位方法都有效,只需要定义一次,显示等待只对单个元素

    3、显示等待不需要整个页面的HTML的DOM树加载完成,显示等待效率更高,工作中一般用显示等待。而隐式等待需要整个HTMLDOM树加载完成。

  eg:

    首先要导入包:

  from selenium.webdriver.support.wait import WebDriverWait

    element = WebDriverWait(driver,9,1),until(lamabda)(x:x.find_element(By.XPATH,"//*[@id='wait']/input[1]"))

3、强制等待

  强制等待就是让代码休眠不做任何操作

    time.sleep(time)  单位为s

  常用的场景:

    -当获取元素的文本内容时,而元素的文本内容是需要通过后台接口请求并渲染的,此时,如果用隐式等待或显示等待是没有办法获取到文本内容的,所以需要使用强制等待

    -要操作的该元素已经存在,但是有其他元素需要等待且与该操作的元素有业务关联,如果使用隐式等待或显示等待对该元素操作的话,是没有办法进行的,也需要使用强制等待的方法

 

二、下拉框、弹出框、滚动条

1、下拉框

  下拉框 选择实现步骤:

    1、导入Select类 (from selenium.webdriver.support.select import Select)

    2、实例化select对象  select = Select(element) # element对象表示的是select元素的对象

    3、通过select的相关方法选择option选项

      -select.select_by_index(index)  参数index表示的option索引

      -select.select_by_value(value) 参数value表示的是option元素中的value值

      -selec.select_by_visible_text(visible_text) 参数visible_text表示的option的文本内容

2、弹出框

  弹出框的操作步骤:

    1、alter = driver.switch_to.alter  

    2、处理弹出框

      -alter.text 获取弹出框提示信息

      -alter.accept() 确定弹出框信息

      -alter.dismiss() 取消弹出框信息

  示例:

  

 1 from selenium import webdriver
 2 from selenium.webdriver.support.wait import WebDriverWait
 3 from selenium.webdriver.support.select import Select
 4 
 5 driver = webdriver.Firefox()
 6 driver.get("file:///F:/2021%E5%B9%B4%E9%BB%91%E9%A9%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/02%E7%AC%94%E8%AE%B0%E8%AE%B2%E4%B9%89%E6%BA%90%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%AF%BE%E4%BB%B6%E8%B5%84%E6%96%99/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%8F%8A%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
 7 driver.implicitly_wait(5) # 隐式等待时间5s
 8 driver.find_element_by_css_selector("#userA").send_keys("admin")
 9 driver.find_element_by_css_selector(".emailA").send_keys("11111@qq.com")
10 driver.find_element_by_css_selector("#alerta").click()
11 time.sleep(3)
12 # print(driver.title)
13 # print(driver.current_url)
14 
15 alter = driver.switch_to.alert
16 print(alter.text)
17 alter.dismiss()
18 
19 time.sleep(3)
20 driver.quit()

3、滚动条操作

  -滚动实现步骤:

    控制滚动条到最下方

    1、定义js

        js = "window.scrollTo(0,2000)"   # 如果想要移动到最下方,y值给出最大值就可以了

    2、执行js

        driver.execute_script(js)

    

js = "window.scrollTo(0,2000)"
driver.execute_script(js)
time.sleep(3)

 

标签:E8%,python,元素,driver,滚动条,E5%,等待,下拉框,select
来源: https://www.cnblogs.com/1050619969kong/p/15143440.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有