from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
import csv
import os
import re
class ZiDongHuaCeShi:
def __init__(self):
self.driver = webdriver.Chrome() # 实例化一个对象
self.driver.maximize_window() # 窗口最大化
'''
我不会告诉你这样做会有问题的
'''
"""
1. 定位元素 API 一旦执行失败(即查找不到), 就会抛出异常
因此必须使用 try: .. except: ... 机制避免错误的行为影响程序继续进行
2. 可变时长等待,类似于数据库中的可变长字符类型(varchar),当元素出现时就定位该元素,而不是采用sleep()这种定时等待
3. 将两者结合起来
"""
def find_elements(self, key, value):
elements = []
try:
if key == 'xpath':
elements = WebDriverWait(self.driver, 25).until(
EC.presence_of_all_elements_located((By.XPATH, value)))
elif key == 'class_name':
elements = WebDriverWait(self.driver, 25).until(
EC.presence_of_all_elements_located((By.CLASS_NAME, value)))
elif key == 'id':
elements = WebDriverWait(self.driver, 25).until(
EC.presence_of_all_elements_located((By.ID, value)))
elif key == 'name':
elements = WebDriverWait(self.driver, 25).until(
EC.presence_of_all_elements_located((By.NAME, value)))
except Exception as e:
print(e)
return elements
def do_something(self):
self.driver.get("https://www.baidu.com/")
try:
self.find_elements(key='xpath', value="//input[@id='kw']")[0].send_keys("python Selenium")
except Exception as e:
print(e)
try:
self.find_elements('xpath', "//input[@id='su']")[0].click()
except Exception as e:
print(e)
sleep(10)
self.driver.quit()
if __name__ == "__main__":
KaiShi = ZiDongHuaCeShi()
KaiShi.do_something()
selenium 使用进阶(一)
最新推荐文章于 2024-07-21 10:59:09 发布