2023.4.4编辑
selenium 3 与 4 的区别
-
selenium 3 与 4 ,元素定位表达不同,本质一样
-
selenium 3
find_elemnt_by_xxx
selenium 4
find_elemnt(By.xxx,"")
-
selenium 4不支持下划线
-
解压安装包,将解压的驱动放在合适的位子,复制驱动路径,粘贴在环境变量path里
-
打开Pycharm终端,输入
pip install selenium
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.xxxx.com")
sleep(1)
#id 定位
driver.find_element(By.ID,"xx")
#name 定位
driver.find_element(By.NAME,"xx")
#tag name定位
driver.find_element("input")
driver.find_element(By.TAG_NAME, 'xx')
#根据 超链接标签 中的 部分 文本内容来定位
print (driver.find_element(By.PARTIAL_LINK_TEXT, "xxx").text)
#根据 超链接标签 中的 文本内容来定位元素 >link_text
driver.find_element(By.LINK_TEXT,"新闻")
#class定位
driver.find_element(By.CLASS_NAME,"s_ipt").send_keys("selenium-name定位")
#XPATH定位 相对路径使用>绝对路径
#XPATH 绝对路径
driver.find_element(By.XPATH,"/html/body/div[1]/div/div[3]/ul/li[2]/a")
#full XPATH 相对路径
driver.find_element(By.XPATH, //*[@id='父级id属性值']/input)
#css选择器
driver.find_element(By.CSS_SELECTOR,"xxx").send_keys("CSS定位")
sleep(1)
#截图
driver.save_screenshot(r'C:\Users\Desktop\xxx\xx.PNG')
#退出浏览器
driver.quit
#send_keys函数:文本框输入的字符
driver.find_element(By.ID,"xx").send_keys("selenium-id定位")
#print((xx).text)打印文本
print(driver.find_element(By.TAG_NAME, 'xx').text)
#设置浏览器的大小
driver.set_window_size(222,222)
#最大化瀏覽器窗口
driver.maximize_window()
#模拟浏览器后退按钮
driver.back()
#模拟浏览器F5刷新
driver.refresh()
#模拟点击浏览器关闭按钮
driver.close() 关闭当前窗口
#关闭所有程序启动的窗口
driver.quit()
#获取页面title
driver.title
# 获取当前页面URL
driver.current_url
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.xxxx.com")
action = ActionChains(driver)
#鼠标左单击
driver.find_element(By.LINK_TEXT,"xx").click()
#鼠标悬停
ele = driver.find_element(By.XPATH,'')
ActionChains(driver).move_to_element(ele).perform()
#双击
ele = driver.find_element(By.XPATH,'')
ActionChains(driver).double_click(ele).perform()
#右键
ele = driver.find_element(By.XPATH,'')
ActionChains(driver).context_click (ele).perform()
ActionChains(driver).right_click (ele).perform()
#鼠标拖拽
ele = driver.find_element(By.XPATH,'')
ActionChains(driver).drag_and_drop (ele).perform()
#删除键(BackSpace)
send_keys(Keys.BACK_SPACE)
#空格键(Space)
send_keys(Keys.SPACE)
#制表键(Tab)
send_keys(Keys.TAB)
#回退键(Esc)
send_keys(Keys.ESCAPE)
#回车键(Enter)
send_keys(Keys.ENTER)
#全选(Ctrl+A)
send_keys(Keys.CONTROL,'a')
#复制(Ctrl+C)
send_keys(Keys.CONTROL,'c')
#粘贴(Ctrl+V)
send_keys(Keys.CONTROL,'v')
#控制滚动条 (0:左边距;1000:上边距;单位像素)
js = "window.scrollTo(0,1000)"
driver.execute_script(js)
#滚动到顶部与底部
browser.execute_script("var action=document.documentElement.scrollTop=0")
browser.execute_script("var action=document.documentElement.scrollTop=10000")
#获取当前窗口句柄
driver.current_window_handle
#获取所有窗口句柄
driver.window_handles
#切换指定句柄窗口
driver.switch_to.window(handle)
ah = driver.window_handles
driver.switch_to.window(ah[1])
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
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()
driver.get("https://www.baidu.com/")
driver.implicitly_wait(timeout)
#(timeout:为等待最大时长,单位:秒)
WebDriverWait(driver, timeout, poll_frequency=0.5)
#driver:浏览器驱动对象
#timeout:超时的时长,单位:秒
#poll_frequency:检测间隔时间,默认为0.5秒
#调用方法 until(method):直到...时
#method:函数名称,该函数用来实现对元素的定位
lambda x: x.find_element_by_id("xxxx") #一般使用匿名函数来实现
element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id("xxxxxx"))