赞
踩
首先,我们需要创建一个WebDriver实例,它是与浏览器进行交互的主要接口。
- from selenium import webdriver
-
- driver = webdriver.Chrome('/path/to/chromedriver') # 若已设置环境变量,可省略路径
- driver.get('https://www.example.com') # 打开网页
- print(driver.title) # 获取网页标题
- driver.quit() # 关闭浏览器并退出WebDriver会话
在网页中查找元素是自动化过程的基础。
- from selenium.webdriver.common.by import By
-
- element_by_id = driver.find_element(By.ID, 'some-id')
- element_by_name = driver.find_element(By.NAME, 'some-name')
- element_by_xpath = driver.find_element(By.XPATH, '//div[@class="some-class"]')
- element_by_css = driver.find_element(By.CSS_SELECTOR, 'div.some-class')
找到元素后,我们可以与它进行各种交互,如点击、输入文本等。
- # 输入文本
- search_box = driver.find_element(By.NAME, 'q')
- search_box.send_keys('Selenium')
-
- # 点击按钮
- search_button = driver.find_element(By.NAME, 'btnK')
- search_button.click()
-
- # 清空文本框
- search_box.clear()
Web自动化中,等待某个条件的成立是常见需求,以确保元素已加载。
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
-
- # 显示等待
- element = WebDriverWait(driver, 10).until(
- EC.presence_of_element_located((By.ID, 'some-id'))
- )
-
- # 隐式等待
- driver.implicitly_wait(10) # 设置全局等待时间
下拉菜单是表单常见元素,Selenium提供了Select类来处理它们。
- from selenium.webdriver.support.ui import Select
-
- select_element = driver.find_element(By.ID, 'dropdown')
- select_object = Select(select_element)
-
- select_object.select_by_index(1) # 通过索引选择
- select_object.select_by_value('value') # 通过value属性选择
- select_object.select_by_visible_text('Text') # 通过可见文本选择
有时直接使用JavaScript执行操作是必要的。
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);') # 滚动到底部
Selenium可以处理JavaScript弹窗、iFrames和新窗口。
- # 处理Alert弹窗
- alert = driver.switch_to.alert
- alert_text = alert.text
- alert.accept() # 点击'OK'
-
- # 切换到iFrame
- driver.switch_to.frame('frameName')
-
- # 切换回主文档
- driver.switch_to.default_content()
-
- # 切换窗口
- driver.switch_to.window(driver.window_handles[1])
有时我们需要获取元素的属性或者CSS属性。
- attr_value = element.get_attribute('href')
- css_value = element.value_of_css_property('color')
以下是一个利用Selenium进行自动登录的例子。
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- from selenium.webdriver.common.keys import Keys
-
- driver = webdriver.Chrome('/path/to/chromedriver')
- driver.get('https://www.somewebsite.com/login')
-
- # 填写用户名和密码
- username = driver.find_element(By.ID, 'username')
- password = driver.find_element(By.ID, 'password')
-
- username.send_keys('your_username')
- password.send_keys('your_password')
-
- # 点击登录
- login_button = driver.find_element(By.ID, 'submit')
- login_button.click()
-
- # 等待登录成功的页面元素加载
- wait = WebDriverWait(driver, 10)
- logged_in_element = wait.until(EC.presence_of_element_located((By.ID, 'logged-in-message')))
-
- print('登录成功!')
-
- # 执行后续的自动化操作...
-
- # 关闭浏览器
- driver.quit()
在这个例子中,我们自动化了登录过程,包括填写认证信息和提交表单,然后等待登录成功消息的出现。
Selenium是Python爬虫和自动化测试领域的强大工具。本篇博客中我们介绍了Selenium的常用API,这些API能帮助你模拟几乎所有的浏览器操作,从而使你能够构建出功能强大的自动化脚本。掌握这些API是提高爬虫效率和应对复杂页面的关键。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。