selenium+python:点击元素、alert弹框、鼠标操作(左键点击、右键点击、双击、鼠标悬浮)、下拉选项框、窗口切换等操作的处

简介: selenium+python:点击元素、alert弹框、鼠标操作(左键点击、右键点击、双击、鼠标悬浮)、下拉选项框、窗口切换等操作的处

一、鼠标点击元素操作

driver=webdriver.Chrome()

driver.maximize_window()

driver.get("https://www.baidu.com/")

#找到“登录”这个按钮,并且点击(click())
WebDriverWait(driver,15).until(EC.visibility_of_element_located((By.XPATH,'//div[@id="u1"]//a[text()="登录"]'))).click()

二、alter弹框

driver=webdriver.Chrome()
driver.maximize_window()
driver.get("E:\\python08\\web_selenium\\HTML_HomeWork.html")
driver.execute_script("window.alert('这是一个测试Alert弹窗');")
WebDriverWait(driver,30).until(EC.alert_is_present())        #等待直到alert弹框出现
#切换到该alert弹框
alert=driver.switch_to.alert
#获取alert弹框的文本
text=alert.text
print(text)
#接受该alert弹框的内容
alert.accept()
#不接受(取消)
alert.dismiss()

三、鼠标操作

在进行页面操作时,需要用鼠标进行左键点击、右键点击、双击、鼠标悬浮(比如鼠标移到某个位置就会出现一些元素)、鼠标拖动等操作,这时需要导入ActionChains模块

  • perform() 执行所有ActionChains 中存储的行为
  • click_and_hold(element)左键点击
  • context_click(elem) 右击
  • double_click(elem) 双击
  • drag_and_drop(source,target) 拖动
  • move_to_element(elem) 鼠标悬停

例如:百度首页,鼠标移动到“设置”时会出现下拉选项

from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.baidu.com")
#找到“设置”这个元素
element = driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_settingicon"]')
#实例化ActionChains类
#调用鼠标操作
#最后,调用perform()去执行所有的鼠标动作。
ac = ActionChains(driver)
# 鼠标悬浮
ac.move_to_element(element)
# 执行鼠标动作
ac.perform()

以上操作,可以合起来写成一条代码:ActionChains(driver).move_to_element(element).perform()

tips:鼠标悬浮的下拉列表元素定位:CTRL + Shift + C,松开,移动到要定位的元素处

四、下拉选项框

类似于这种下拉选项框,然后选择某个选项的操作

from selenium.webdriver.support.ui import Select
sele_obj = driver.find_element_by_xpath('//select[@name="ft"]')      #找到该下拉选项框
#实例化
select = Select(sele_obj)
#根据下标选值
select.select_by_index(2)
#根据value属性选值
select.select_by_value("rtf")
#根据文本内容选值
select.select_by_visible_text("Adobe Acrobat PDF (.pdf)")

五、窗口切换

网页上的某些操作会打开新的窗口,如果要到新的窗口去做其他操作,就需要进行窗口切换

#打开一个浏览器 - 与浏览器之间的会话开始
driver = webdriver.Chrome()
#全屏操作
driver.maximize_window()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("火车票")   #百度首页输入“火车票”
driver.find_element_by_id("su").click()                        #点击查询
#等待元素出现
xpath_ele = '//h3/a[contains(text()," 12306")]'
ele_locator = (By.XPATH,xpath_ele)
WebDriverWait(driver,30,1).until(EC.visibility_of_element_located(ele_locator))
#获取未操作前的窗口总数 - 只有1个窗口
handles = driver.window_handles
print(handles)
#点击 - 带来窗口数量的变化 - 会有2个窗口(新窗口出现的时间把控不了)
driver.find_element_by_xpath(xpath_ele).click()
WebDriverWait(driver,10).until(EC.new_window_is_opened(handles))
#重新获取一下窗口列表 - 有2个窗口了
handles = driver.window_handles
print(handles)
#切换到新的窗口
driver.switch_to.window(handles[-1])
切换到第一个窗口
# driver.switch_to.window(windows[0])
#等待元素出现再操作
WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//a[@href="XXXXXX"]')))
driver.find_element_by_xpath('//a[@href="XXXXXXX"]').click()
#关掉当前页面,回到第一个页面。
driver.close()


相关文章
|
4月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
388 0
|
9月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
686 68
|
8月前
|
数据采集 Web App开发 JavaScript
无头浏览器技术:Python爬虫如何精准模拟搜索点击
无头浏览器技术:Python爬虫如何精准模拟搜索点击
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
390 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
12月前
|
Web App开发 数据采集 数据安全/隐私保护
Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
|
数据采集 Web App开发 JavaScript
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
本文介绍了如何使用Selenium爬虫技术抓取抖音评论,通过模拟鼠标悬停操作和结合代理IP、Cookie及User-Agent设置,有效应对动态内容加载和反爬机制。代码示例展示了具体实现步骤,帮助读者掌握这一实用技能。
670 0
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
Python
Python 选出列表中特定的元素
Python 选出列表中特定的元素
287 3
|
数据处理 索引 Python
Python列表与元素修改的操作技巧
Python列表提供了丰富的方法和技巧来进行高效的数据操作。熟练运用上述技巧,可以大大提高数据处理的效率和代码的可读性。实践中,根据具体需求灵活选择合适的方法,可以在保证代码效率的同时,也使代码更加简洁明了。
423 2
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
290 3

推荐镜像

更多