判断某个页面是否存在某个ID:
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.chrome.service import Service # 创建浏览器驱动 driver = webdriver.Chrome(service=Service(r'C:\software\chrome_soft\chromedriver-win32\chromedriver.exe')) # 打开登录页面 driver.get("http://****.com/Home/User/login.html") # 判断用户名输入框是否存在 try: # 查找用户名输入框元素 username_input = driver.find_element("id", "userName") print("用户名输入框存在") except NoSuchElementException: print("用户名输入框不存在") # 关闭浏览器 driver.quit()
模拟用户登录:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建浏览器驱动 driver = webdriver.Chrome(service=Service(r'C:\software\chrome_soft\chromedriver-win32\chromedriver.exe')) # 打开登录页面 driver.get("http://****.com/Home/User/login.html") # 查找用户名输入框和密码输入框元素 username_input = driver.find_element(By.ID, "userName") password_input = driver.find_element(By.ID, "password") # 输入用户名和密码 username_input.send_keys("USERNAME") password_input.send_keys("PASSWORD") # 查找并点击登录按钮 login_button = driver.find_element(By.XPATH, "//input[@value='登录']") login_button.click() # 等待登录完成(可以根据实际情况进行调整) WebDriverWait(driver, 10).until(EC.url_contains("962360.com/Home")) # 打印登录后的页面标题 print("登录成功,当前页面标题为:", driver.title) # 关闭浏览器 driver.quit()
XPath 定位器 (By.XPATH
):通过 XPath 表达式来定位元素,可以使用绝对路径或相对路径。
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://example.com") # 通过绝对路径定位元素 element = driver.find_element(By.XPATH, "/html/body/div[1]/div[2]/input") # 通过相对路径定位元素 element = driver.find_element(By.XPATH, "//input[@id='elementID']")
CSS Selector 定位器 (By.CSS_SELECTOR
):通过 CSS 选择器来定位元素。
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
# 通过标签名定位元素
element = driver.find_element(By.CSS_SELECTOR, "input")
# 通过类名定位元素
element = driver.find_element(By.CSS_SELECTOR, ".elementClass")
# 通过ID选择器定位元素
element = driver.find_element(By.CSS_SELECTOR, "#elementID")
ID 定位器 (By.ID
):通过元素的 ID 属性来定位元素。
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://example.com") element = driver.find_element(By.ID, "elementID")
Class 定位器 (By.CLASS_NAME
):通过元素的 Class 属性来定位元素。
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://example.com") element = driver.find_element(By.CLASS_NAME, "elementClass")
selenium为什么不推荐使用xpath定位?
selenium使用xpath定位时采用遍历页面的方式,性能指标较差。另外xpath定位有通过绝对路径定位的,有时会不准确;
而用css选择器定位比较简洁,运行速度更快,通常用于性能要求严格的场景。
time.sleep的使用
在 Selenium 中,
time.sleep()
通常用于等待页面元素加载完成或等待页面动作执行完毕。例如,在页面跳转后,需要等待页面加载完成才能进行下一步操作:from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://www.example.com") # 等待页面加载完成 time.sleep(3) # 定位元素并进行操作 element = driver.find_element_by_id("elementID") element.click() # 关闭浏览器 driver.quit()
在这个示例中,使用
time.sleep(3)
等待 3 秒,确保页面加载完成后才去定位元素并进行操作。注意,time.sleep()
是一个简单的暂停函数,如果页面加载时间不确定,最好使用 Selenium 提供的等待方法来等待元素加载完成,比如WebDriverWait
和expected_conditions
。