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()


相关文章
|
1月前
|
Web App开发 测试技术
使用Selenium模拟鼠标滚动操作的技巧
本文介绍了使用Selenium进行Web自动化测试时如何模拟鼠标滚动操作。模拟滚动对于处理动态加载的内容至关重要。通过`ActionChains`类,可以实现向下滑动1000像素的操作。示例代码展示了如何结合滚动来截取长页面的完整图片。总结来说,Selenium的`ActionChains`使得模拟用户行为,如滚动,变得简单,便于执行自动化任务。
30 0
|
1月前
|
大数据 Python
使用Python查找字符串中包含的多个元素
本文介绍了Python中查找字符串子串的方法,从基础的`in`关键字到使用循环和条件判断处理多个子串,再到利用正则表达式`re模块`进行复杂模式匹配。文中通过实例展示了如何提取用户信息字符串中的用户名、邮箱和电话号码,并提出了优化策略,如预编译正则表达式和使用生成器处理大数据。
21 1
|
1月前
|
索引 Python
在Python中,如何快速地遍历列表中的每个元素?
在Python中,如何快速地遍历列表中的每个元素?
31 3
|
3月前
|
索引 Python
Python 教程之 Pandas(10)—— 访问 series 的元素
Python 教程之 Pandas(10)—— 访问 series 的元素
50 0
Python 教程之 Pandas(10)—— 访问 series 的元素
|
5天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
8 2
|
6天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
32 2
|
13天前
|
Java 测试技术 定位技术
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
【4月更文挑战第15天】本文介绍了如何使用Selenium进行浏览器窗口切换以操作不同页面元素。首先,获取浏览器窗口句柄有两种方法:获取所有窗口句柄的集合和获取当前窗口句柄。然后,通过`switchTo().window()`方法切换到目标窗口句柄。在项目实战部分,给出了一个示例,展示了在百度首页、新闻页面和地图页面之间切换并输入文字的操作。最后,文章还探讨了在某些情况下可能出现的问题,并提供了一个简单的本地HTML页面示例来演示窗口切换的正确操作。
42 0
|
1月前
|
Web App开发 测试技术
使用selenium轻松实现元素拖拽
本文介绍了如何使用Selenium进行Web自动化测试中的元素拖拽操作。通过`ActionChains`类,我们可以模拟用户拖拽行为,确保测试覆盖到页面布局调整等交互功能。示例代码展示了如何定位元素并执行拖拽,以及在实际场景中改变页面布局的应用。利用Selenium的拖拽功能,可提升自动化测试的真实性和效率。
17 0
|
1月前
|
Python
利用Python处理列表中的重复元素的多种方法
利用Python处理列表中的重复元素的多种方法
51 0
|
1月前
|
Python
在Python中,如何使用列表推导式来遍历列表中的每个元素?
在Python中,如何使用列表推导式来遍历列表中的每个元素?
26 2