web自动化学习-鼠标操作及下拉框

news/2024/11/25 9:26:37/

鼠标操作

鼠标操作:Action.Chains 分为 操作+执行

操作包括但不限于如下几种:

  • 悬浮:move_to_element
  • 单击:click
  • 双击:double_click
  • 点击并按住:click_and_hold 释放 relese
  • 拖拽:drag_and_drop
  • 执行:perform()
from time import sleepfrom selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWaitdriver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
loc = (By.ID, 's-usersetting-top')
# 先找到鼠标需要操作的元素对象
ele = driver.find_element(*loc)
# 实例化ActionChains
ac = ActionChains(driver)
# 调用鼠标操作
# ac.move_to_element(ele)
# 调用后返回对象,继续点击操作并执行
ac.move_to_element(ele).click(ele)
# 调用perform()执行鼠标操作,执行后会清空相关信息
ac.perform()
# 等待下拉列表元素可见
loc = (By.XPATH, '//a[text()="高级搜索"]')
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
sleep(2)
# 点击元素,出现下拉列表
loc = (By.XPATH, "//span[text()='所有网页和文件']")
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
sleep(1)# 等待下拉列表中要操作的元素可见,然后执行操作
loc = (By.XPATH, '//p[@data-value="doc"]')
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
sleep(1)
driver.quit()

select 类

select_by_value
select_by_index
select_by_visible_text

1、找到页面有Select的信息
2、找到Select元素
3、实例化Select类,将select元素对象传进去
4、通过[下标/value/文本]选值

from selenium.webdriver.support.select import Select
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get(r"有select元素的页面")
# 找到select元素
ele=driver.find_element("id","hobby")
# 实例化select类,将select元素对象传进去
s=Select(ele)
# 通过[下标/value/文本]选值
s.select_by_value("看电影")
sleep(2)
s.select_by_index(2)
sleep(2)
s.select_by_visible_text("唱歌")
sleep(3)
driver.quit()

http://www.ppmy.cn/news/507329.html

相关文章

java实现鼠标指针匀速下滑,当鼠标移到自动填充柄上,鼠标指针变为( )。

【单选题】完全垄断厂商达于长期均衡的条件是 【单选题】Tant pis ! Tu as fait ______ de fautes que moi dans la dicte. ( ) 【单选题】公式“int(rand()*10)”产生的值不可能是( )。 【判断题】多步骤大量大批生产一般不需要在完工产品与在产品间分配费用。 【多选题】下列…

mysql errno 32 mysqldump: Got errno 32 on write 解决办法

当遇到mysqldump: Got errno 32 on write错误时可以尝试以下详细的解决方案: 检查磁盘空间:使用命令df -h或者df -i检查磁盘使用情况。确保输出文件所在的目录或分区有足够的可用空间。 检查文件路径和权限:使用命令ls -l检查输出文件所在目…

Vue 虚拟滚动

虚拟滚动(Virtual Scrolling)是一种优化大型列表渲染性能的技术,在Vue中也有对应的实现方式。虚拟滚动可以提高大量数据列表的性能和响应速度,减少页面的渲染开销。 在Vue中实现虚拟滚动的一种常见方式是使用第三方库&#xff0c…

001506

马上得到Python答案

linux系统mysql报err1055_MySQL Err 1055的解决

1..执行SELECT SESSION.sql_mode; 2.然后在复制得到的这个结果 ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 3.退出MySQL,执行vim /etc/my.cnf sql_modeSTRICT_TRANS_TABLES,NO_ZERO…

【mysql报错1055】

mysql8.0版本使用groupby去重出现问题解决 问题: select * from table GROUP BY column;mysql 执行报错1055 问题分析: 1、查看sql_mode select sql_mode;可见ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,若select中的列没有在…

docker-compose部署apollo

修改了apollo-configservice默认端口&#xff0c;数据库也需要修改eureka.service.url的端口 mysql:5.7.36自行部署mysql,然后按照如下导入sql mysql -uroot -pxxx < apollo/scripts/sql/apolloportaldb.sqlmysql -uroot -pxxx < apollo/scripts/sql/apolloconfigdb.sql…

Postfix+dovecot邮件服务器搭建(麒麟系统+UOS foxmail客户端)

麒麟邮件客户端安装相关的软件包 [rootmail ~]# cat /etc/os-release NAME"Kylin Linux Advanced Server" VERSION"V10 (Sword)" ID"kylin" VERSION_ID"V10" PRETTY_NAME"Kylin Linux Advanced Server V10 (Sword)" ANSI_CO…