当前位置: 首页 > article >正文

selenium使用

浏览器操作(方法)


1.maximize window()最大化浏览器
2.set window_size(width,height)设置浏览器宽、高(像素点)
3.set _window_position(x,y)设置浏览器位置,浏览器左上角相对于屏幕左上角位置
4.back()后退
5.forward()前进
6.refresh()刷新
7.close()关闭当前页面
8.quit()关闭浏览器
浏览器信息(属性)
1. title 获取页面title
2.current url 获取当前页面URL

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

#创建webdriver对象,把驱动放置到了系统环境变量中,可不带参数创建
# driver =webdriver.Firefox()
driver = webdriver.Chrome()
#使用浏览器打开指定页面
driver.get('http://www.baidu.com')
#最大化浏览器
driver.maximize_window()

#定位元素
driver.find_element(By.ID, 'kw').send_keys("书包")
driver.find_element(By.ID, 'su').click()
print(driver.title)
print(driver.current_url)
time.sleep(3)
#浏览器后退
driver.back()
time.sleep(3)
#浏览器前进
driver.forward()
time.sleep(5)
#定位链接
# driver.find_element(By.LINK_TEXT,'hao123').click()

#xpath定位方法
# driver.find_element(By.XPATH,"//*[@aria-label='百度热搜']").click()
# driver.find_element(By.XPATH,"//input[@placeholder='请输入用户名']").send_keys("admin")
time.sleep(5)
#回收资源,关闭浏览器
driver.quit()

等待

为什么要等待
因为在web中看到的元素,不一定是写在html代码中的,有可能是通过javascript代码的dom操作产生出来的。 而js产生元素,很可能先要去获取到数据,处理后再去显示的。所以:不一定网页打开,所有的元素都在页面中了。 如果马上去找,可能出错。

强制等待,通过time.sleep()进行强制等待,通过自行判断等待时间,容易造成时间不准确,浪费时间或在时间太短导致出错。

1.显式等待


·如何操作
1.使用WebDriverWait包装 webDriver对象
2.使用 webDriverWait的util 方法,传入可调用对象(通常是presence of element located函数的返回值)

不推荐用,敲的代码太长


from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
# 启动Chrome WebDriver
driver = webdriver.Chrome()

# 设置隐式等待时间为10秒(通常只需要设置一次)
driver.implicitly_wait(10)

# 打开网页
driver.get('http://www.baidu.com')

try:
    # 查找并操作搜索框
    search_box = driver.find_element(By.ID, 'kw')
    search_box.send_keys("书包")
    search_button = driver.find_element(By.ID, 'su').click()

    # 使用显式等待等待搜索结果中的某个元素变得可点击(这里需要您根据实际情况修改)
    try:
        # 假设我们要点击第一个搜索结果(这只是一个示例,实际情况可能不同)
        first_result = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.ID, '3001'))
        )
        first_result.click()  
    except TimeoutException:
        print("搜索结果加载超时")

except NoSuchElementException:
    print("搜索框或搜索按钮未找到")
finally:
    # 关闭浏览器
    time.sleep(5)
    driver.quit()

隐式等待

隐式的整不出来,不生效

# 设置隐式等待时间为10秒
driver.implicitly_wait(10)
  1. 全局性:隐式等待一旦设置,在整个WebDriver会话中都生效。这意味着在该会话中查找的所有元素都会应用这个等待时间。
  2. 等待机制:隐式等待并不是让线程休眠一段时间,而是在规定的时间内不断刷新页面以查找元素。如果找到了元素,则立即返回;如果超时仍未找到,则抛出异常。
  3. 性能影响:虽然隐式等待简化了代码,但如果设置的等待时间过长,可能会影响测试脚本的执行性能。因此,应根据实际情况合理设置等待时间。
  4. 异常处理:如果设置了隐式等待但仍然在查找元素时抛出了NoSuchElementException异常,这通常意味着元素确实不存在于页面上,或者定位方式有误。

http://www.kler.cn/a/537177.html

相关文章:

  • 全排列问题(LeetCode 46 47)
  • 设计模式Python版 代理模式
  • yum 安装mysql
  • 【截图】selenium自动通过浏览器截取指定元素div的图片
  • SpringBoot的工作原理
  • 使用 Redis Streams 实现高性能消息队列
  • Stable Diffusion的入门介绍和使用教程
  • 如何在Swift中实现基本的UI设计?
  • AI眼镜-推理成本降低将加速端侧硬件智能化-AI 眼镜、AI玩具、手机AI化
  • Mixture of Experts(专家混合模型)深入解析:突破传统神经网络的计算瓶颈
  • unity学习32:角色相关1,基础移动控制
  • 课程知识图谱生成系统设计与实现
  • 【Android】版本和API对应关系表
  • BUU27 [SUCTF 2019]CheckIn1
  • Android开发经验谈:2021年Android网络编程总结篇,经典好文_android网络编程心得
  • 【redis】redis集群时的槽Slot是什么?
  • 深度学习:解码智能的“数字炼金术”
  • Java面试题及答案整理( 2022最新版,持续更新)
  • 链式前向星复习图论
  • 【GitHub】相关工具下载及使用
  • 高阶C语言|和结构体与位段的邂逅之旅
  • 109,【1】攻防世界 web 题目名称-文件包含
  • 1Panel应用推荐:WordPress开源博客软件和内容管理系统
  • 设计模式与技术组件
  • Office/WPS接入DS等多个AI工具,开启办公新模式!
  • 32.日常算法