23. selenium使用

本文介绍了如何使用Selenium Python进行元素定位,包括id、class_name、name、tag_name和xpath等方法。此外,讲解了操作表单元素如输入框、checkbox以及行为链的使用。同时,详述了Selenium的页面等待技术,包括Cookie操作和页面等待策略,如隐式等待和显式等待。最后,讨论了打开多窗口和页面切换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 定位元素

  • find_element_by_id:根据id查找某个元素
submitTag = driver.find_element_by_id('su')
submitTag1 = driver.find_element(By.ID,'su')
  • find_element_by_class_name:根据类名查找某个元素
submitTag = driver.find_element_by_class_name('su')
submitTag1 = driver.find_element(By.CLASS_NAME,'su')
  • find_element_by_name:通过name属性值来查找元素
submitTag = driver.find_element_by_name('email')
submitTag1 = driver.find_element(By.NAME,'email')
  • find_element_by_tag_name:通过标签属性名查找元素
submitTag = driver.find_element_by_tag_name('div')
submitTag1 = driver.find_element(By.TAG_NAME,'div')
  • find_element_by_xpath:通过xpath语法来获取元素
submitTag = driver.find_element_by_xpath('//div')
submitTag1 = driver.find_element(By.XPATH,'//div')
  • find_element是获取第一个满足条件的元素,find_elements是获取所有满足条件的元素

2. 操作表单元素

操作输入框分2步:第一步找到这个元素,第二步使用send_keys(value),将数据填充进去

  • 使用clear方法可以清除输入框的内容:inputTag.clear()
  • 操作checkbox标签,要想选中checkbox标签,需要选中标签,点击click()事件
rememberTag = driver.find_element_by_name("rememberMe")
rememberTag.click()
# 操作按钮
inputTag = driver.find_element_by_id('su')
inputTag.click()
# 选择select
select = seleum.webdriver.support.ui.Select

3. 行为链

actions = ActionChains(driver)
actions.move_to_element(inputTag)
actions.send_keys_to_element(inputTag, 'Python')
actions.move_to_element(submitTag)
actions.context_click()
actions.click(submitTag)
actions.perform()
# click_and_hold(element):点击但不松开鼠标
# context_click(element):右键单击
# double.click(element):双击

4. Selenium页面等待

4.1 Cookie操作

  • 获取所有的cookie: cookies = driver.get_cookies()
  • 根据cookie的name来获取cookie: value = driver.get_cookie(key)
  • 删除某个cookie: driver.delete_cookie(‘key’)

4.2 页面等待

  • NullPointer的异常方法:为了解决这个问题。所以 Selenium 提供了两种等待⽅式:⼀种是隐式等待、⼀种是显式等待。
  • 隐式等待:调用driver.implicitly_wait,获取不可用元素之前等待10秒:driver.implicitly_wait(10)
  • 显示等待
from selenium import webdriver
from selenium.webdriver.commom.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://baidu.com/")
try:
	element = WebDriverWait(driver, 10).until(
		EC.presence_of_element_located((By.ID, "myDynamicElement"))
	)
finally:
	driver.quit()
# presence_of_element_located:某个元素已经加载完毕了
# presence_of_all_elements_located:网页中满足条件的元素加载完毕
# element_to_be_clickable:某个元素可以点击了

5. 打开多窗口和切换页面

  • switch_to_window来进⾏切换,具体切换到哪个⻚⾯,可以从driver.window_handles中找到
# 打开新页面
driver.execute_script("window.open('url')")
print(driver.current_url)
# 切换到新页面中
driver.switch_to_window(self.driver.window_handleles[1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值