使用 Python Selenium 进行元素操作

2023-04-17 00:00:00 python 操作 元素

Python Selenium 是一款流行的自动化测试工具,可以模拟人类用户在浏览器中的各种行为,比如点击链接、填写表单、选择下拉菜单等。下面是 Python Selenium 中常用的元素操作方式。下面的示例中,我们会使用百度搜索作为示例。

  1. 定位元素

在 Selenium 中,可以使用以下方式来定位网页中的元素:

  • 根据 ID 定位元素:使用 find_element_by_id() 方法。
  • 根据 class 名称定位元素:使用 find_element_by_class_name() 方法。
  • 根据标签名定位元素:使用 find_element_by_tag_name() 方法。
  • 根据名称定位元素:使用 find_element_by_name() 方法。
  • 根据链接文本定位元素:使用 find_element_by_link_text() 方法。
  • 根据部分链接文本定位元素:使用 find_element_by_partial_link_text() 方法。
  • 根据 XPath 定位元素:使用 find_element_by_xpath() 方法。
  • 根据 CSS 选择器定位元素:使用 find_element_by_css_selector() 方法。

下面是一个根据关键词定位百度搜索输入框的例子:

from selenium import webdriver

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

# 根据 ID 定位元素
search_box = driver.find_element_by_id("kw")
search_box.send_keys("pidancode.com")

driver.quit()
  1. 点击元素

要点击一个元素,可以使用 click() 方法。下面的示例演示了如何点击百度搜索按钮:

from selenium import webdriver

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

search_box = driver.find_element_by_id("kw")
search_box.send_keys("pidancode.com")

# 根据 ID 定位元素
search_button = driver.find_element_by_id("su")
search_button.click()

driver.quit()
  1. 填写表单

要填写一个表单,可以先定位到表单元素,然后使用 send_keys() 方法输入文本。下面是一个在百度搜索中填写关键词并提交的例子:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

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

search_box = driver.find_element_by_id("kw")
search_box.send_keys("pidancode.com")
search_box.send_keys(Keys.RETURN)

driver.quit()
  1. 选择下拉菜单

如果一个网页有下拉菜单,可以使用 Select() 类来进行选择。首先,需要导入 Select 类:

from selenium.webdriver.support.ui import Select

然后,通过下拉菜单的 ID 或名称来定位到下拉菜单元素。下面的示例展示了如何选择百度搜索的下拉菜单:

from selenium import webdriver
from selenium.webdriver.support.ui import Select

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

# 根据 ID 定位元素
select_box = driver.find_element_by_id("s-usersetting-top")
select = Select(select_box)
select.select_by_visible_text("搜索设置")

driver.quit()
  1. 操作弹出窗口

如果一个网页中存在弹出窗口,可以使用 switch_to_alert() 方法进行操作。下面的示例演示了如何处理一个简单的弹出窗口:

from selenium import webdriver
import time

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

# 点击登录按钮
login_button = driver.find_element_by_link_text("登录")
login_button.click()

# 等待弹出窗口
time.sleep(5)

# 切换到弹出窗口
alert = driver.switch_to_alert()

# 输入用户名和密码
username_box = alert.find_element_by_id("TANGRAM__PSP_10__userName")
username_box.send_keys("your_username")
password_box = alert.find_element_by_id("TANGRAM__PSP_10__password")
password_box.send_keys("your_password")

# 点击登录按钮
submit_button = alert.find_element_by_id("TANGRAM__PSP_10__submit")
submit_button.click()

# 关闭弹出窗口
alert.dismiss()

driver.quit()

上面的示例中,我们点击了百度首页的登录按钮,然后等待了 5 秒钟,等待弹出窗口。接着,我们使用 switch_to_alert() 方法将控制权转交给弹出窗口。在弹出窗口中,我们输入了用户名和密码,并点击登录按钮。最后,我们使用 dismiss() 方法关闭弹出窗口。

相关文章