0


Python Selenium网页自动化

Selenium是一个自动化测试工具,主要用于模拟用户在Web应用程序中的交互操作。虽然它最初被设计用于自动化测试,但也被广泛用于网页数据抓取、网页自动化操作和网页测试。

1.安装和设置Selenium

首先,需要安装Selenium库。使用pip来安装Selenium:

  1. pip install selenium

此外,需要下载并安装一个浏览器驱动程序,以便Selenium可以与浏览器进行通信。Selenium支持多种浏览器,包括Chrome、Firefox、Edge等。根据需要选择合适的浏览器驱动程序。

这里以Chrome浏览器为例,需要下载Chrome驱动并将其添加到系统的PATH环境变量中。

2. 使用Selenium打开网页

使用Selenium打开一个网页:

  1. from selenium import webdriver
  2. # 创建一个Chrome浏览器实例
  3. driver = webdriver.Chrome()
  4. # 打开网页
  5. driver.get("https://www.example.com")
  6. # 关闭浏览器
  7. driver.quit()

这段代码创建了一个Chrome浏览器实例,然后打开了指定的网页。最后,通过

  1. quit()

方法关闭浏览器。

3. 定位和交互HTML元素

Selenium通过不同的方式定位HTML元素,如ID、类名、标签名、XPath等。

  1. # 通过ID定位元素
  2. element = driver.find_element_by_id("element_id")
  3. # 通过类名定位元素
  4. element = driver.find_element_by_class_name("element_class")
  5. # 通过标签名定位元素
  6. element = driver.find_element_by_tag_name("element_tag")
  7. # 通过XPath定位元素
  8. element = driver.find_element_by_xpath("//div[@class='example']")

一旦定位到元素,与其进行交互,如点击、输入文本、获取文本内容等。

  1. # 点击元素
  2. element.click()
  3. # 输入文本
  4. element.send_keys("Hello, Selenium!")
  5. # 获取元素文本内容
  6. text = element.text

4. 处理表单

Selenium还可以用于处理表单元素,如输入框、单选框、复选框和下拉框。

  1. # 输入文本到文本框
  2. text_input = driver.find_element_by_name("username")
  3. text_input.send_keys("my_username")
  4. # 选择单选框
  5. radio_button = driver.find_element_by_id("radio_button_id")
  6. radio_button.click()
  7. # 选择复选框
  8. checkbox = driver.find_element_by_name("agree_checkbox")
  9. checkbox.click()
  10. # 选择下拉框选项
  11. from selenium.webdriver.support.ui import Select
  12. select = Select(driver.find_element_by_id("dropdown_id"))
  13. select.select_by_visible_text("Option 2")

5. 执行JavaScript代码

有时,可能需要执行JavaScript代码来与页面交互或修改页面内容。Selenium允许执行JavaScript代码:

  1. # 执行JavaScript代码
  2. # 这会在页面上显示一个警告框。
  3. driver.execute_script("alert('Hello, Selenium!');")

6. 处理窗口和标签页

Selenium可以处理多个窗口和标签页。使用以下方法切换窗口:

  1. # 获取当前窗口句柄
  2. current_window = driver.current_window_handle
  3. # 获取所有窗口句柄
  4. all_windows = driver.window_handles
  5. # 切换到另一个窗口
  6. driver.switch_to.window(another_window)

7. 等待和超时

等待是一个重要的概念,用于确保页面加载完毕或某个元素可见。Selenium提供了不同类型的等待,如隐式等待和显式等待:

  1. from selenium.webdriver.common.by import By
  2. from selenium.webdriver.support.ui import WebDriverWait
  3. from selenium.webdriver.support import expected_conditions as EC
  4. # 隐式等待
  5. driver.implicitly_wait(10) # 最多等待10秒
  6. # 显式等待
  7. wait = WebDriverWait(driver, 10)
  8. element = wait.until(EC.presence_of_element_located((By.ID, "element_id")))

这样可以确保代码在等待时间内等待元素出现,或在超时后继续执行。

8. 浏览器操作

Selenium还支持一些浏览器操作,如前进、后退、刷新等:

  1. # 前进
  2. driver.forward()
  3. # 后退
  4. driver.back()
  5. # 刷新
  6. driver.refresh()

9. 处理弹出框

  1. # 获取弹出框
  2. alert = driver.switch_to.alert
  3. # 获取弹出框文本
  4. alert_text = alert.text
  5. # 接受弹出框(点击确定按钮)
  6. alert.accept()
  7. # 取消弹出框(点击取消按钮)
  8. alert.dismiss()

10.使用Selenium自动登录一个网站

  1. from selenium import webdriver
  2. # 创建一个Chrome浏览器实例
  3. driver = webdriver.Chrome()
  4. # 打开登录页面
  5. driver.get("https://www.example.com/login")
  6. # 定位用户名和密码输入框
  7. username_input = driver.find_element_by_name("username")
  8. password_input = driver.find_element_by_name("password")
  9. # 输入用户名和密码
  10. username_input.send_keys("my_username")
  11. password_input.send_keys("my_password")
  12. # 提交表单
  13. login_button = driver.find_element_by_id("login_button")
  14. login_button.click()
  15. # 等待登录完成
  16. from selenium.webdriver.common.by import By
  17. from selenium.webdriver.support.ui import WebDriverWait
  18. from selenium.webdriver.support import expected_conditions as EC
  19. wait = WebDriverWait(driver, 10)
  20. wait.until(EC.presence_of_element_located((By.ID, "user_profile")))
  21. # 登录成功后的操作
  22. # ...
  23. # 关闭浏览器
  24. driver.quit()

本文转载自: https://blog.csdn.net/qq_61532016/article/details/141157008
版权归原作者 AixXiang 所有, 如有侵权,请联系我们删除。

“Python Selenium网页自动化”的评论:

还没有评论