python">定位方法 #功能from selenium import webdriver#载入驱动
from selenium.webdriver.common.by import By
#新版载入by,旧版的find_element_by_id语句一般会被划掉,然后给你提示说语句已淘汰,不过目前还是可以运行,只是代码不好看。#启动驱动的两种写法:
with webdriver.Chrome() as driverdriver=chromedriver.chrome()#八大基础定位
find_element(By.ID,'value') #定位ID
find_element(By.NAME,'value') #定位name
find_element(By.CLASS_NAME,'value') #定位class
find_element(By.TAG_NAME,'value') #定位tag功能标签
find_element(By.LINK_TEXT,'value') #定位link
find_element(By.PARTIAL_LINK_TEXT,'value') #定位局部link,模糊查找
find_element(By.CSS_SELECTOR,'value') #定位CSS多属性组合
find_element(By.XPATH,'value') #定位多属性组合#上下左右模糊定位法
above() #定位到现元素上面的元素
below() #定位到现元素下面的元素
toLeftOf() #定位到现元素左面的元素
tpRightOf() #定位到现元素右面的元素
near() #定位到最多距现元素50个像素远的元素#输入、拖放、点击
find_element().send_keys("内容") #定位并输入文本"source = driver.find_element(By.ID, ""source"")
target = driver.find_element(By.ID, ""target"")
ActionChains(driver).drag_and_drop(source, target).perform()" #拖放功能find_element().click() #定位并点击#创建、打开、网址、前进、后退、刷新以及读取页面标题
driver = webdriver.Chrome() #创建Chrome浏览器对象
driver.get("https://example.org") #打开网页
driver.current_url #获取当前网址
driver.back() #按下浏览器的后退按钮
driver.forward() #按下浏览器的前进按钮
driver.refresh() # 刷新当前网页
driver.title #从浏览器中读取当前页面标题#handle、跳转、关闭、退出、嵌网操作
driver.current_window_handle #当打开一个新窗口时,获取该窗口的处理权"find_element().click()
driver.switch_to.window(window_handle)" #当点击一个链接跳转到新窗口时,需要switch到新窗口"driver.switch_to.new_window('tab')
driver.switch_to.new_window('window')" #创建新窗口并switch"driver.close()
driver.switch_to.window(original_window)" #关闭一个窗口或tabdriver.quit() #退出浏览器driver.switch_to.frame(1) #Frames和Iframes,点击iframes中的按钮driver.switch_to.default_content() #退出一个frame或frameset#窗口大小、位置、最大化、最小化、全屏
"size = driver.get_window_size()
width1 = size.get(""width"")
height1 = size.get(""height"") " #获取窗口大小driver.set_window_size(1024, 768) #设置窗口大小"position = driver.get_window_position()
x1 = position.get('x')
y1 = position.get('y') " #获得窗口位置driver.set_window_position(0, 0) #设置窗口位置driver.maximize_window() #最大化窗口driver.minimize_window() #最小化窗口driver.fullscreen_window() #窗口全屏#网页加载等待,还有一种流式等待没搞懂,这里忽略
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC#条件等待
"WebDriverWait(driver, timeout=3).until(some_condition) " #显式等待网页加载完成
driver.implicitly_wait(10) #隐式等待#警报处理、处理确认和处理提示
"river.find_element(By.LINK_TEXT, ""See an example alert"").click()
alert = wait.until(expected_conditions.alert_is_present())
text = alert.text
alert.accept()" #处理警报"driver.find_element(By.LINK_TEXT, ""See a sample confirm"").click()
wait.until(expected_conditions.alert_is_present())
alert = driver.switch_to.alert
alert.dismiss()" #处理确认"driver.find_element(By.LINK_TEXT, ""See a sample prompt"").click()
wait.until(expected_conditions.alert_is_present()
alert = Alert(driver)
alert.send_keys(""Selenium"")
alert.accept()" #处理提示#HTTP代理
"PROXY = ""<HOST:PORT>""
webdriver.DesiredCapabilities.CHROME['proxy'] = {""httpProxy"": PROXY,""ftpProxy"": PROXY,""sslProxy"": PROXY,""proxyType"": ""MANUAL"",}" #Http代理#三种加载方式
from selenium.webdriver.chrome.options import Options#载入optiions
options.page_load_strategy = 'normal' #normal(网页完全加载)
options.page_load_strategy = 'eager' #eager(只加载主页面,忽略表格、图像和子框架)
options.page_load_strategy = 'none' #none(仅加载主页面)#镶嵌查找,叠中叠
driver.find_element(By.NAME, "q") #查找元素"for e in elements:print e.text " #查找多元素变量.find_element(By.NAME, "q") #从元素下查找单个元素"elements = element.find_elements(By.TAG_NAME, 'p')for e in elements:print e.text " #从元素下查找多个元素"driver.find_element(By.CSS_SELECTOR, '[name=""q""]').send_keys(""webElement"")
river.switch_to.active_element.get_attribute(""title"")print attr" #获取当前锚定元素#键盘组合操作
from selenium.webdriver.common.keys import Keys#载入keydriver.find_element(By.NAME, "q").send_keys("webdriver" + Keys.ENTER)
#sendKeys输入+enter"driver.find_element(By.NAME, ""q"").send_keys(""webdriver"" + Keys.ENTER)
webdriver.ActionChains(driver).key_down(Keys.CONTROL).send_keys(""a"").perform()" #keyDown 输入+enter,再ctrl+aaction.key_down(Keys.SHIFT).send_keys_to_element(search, "qwerty").key_up(Keys.SHIFT).send_keys("qwerty").perform() #keyUp长按.Clear() #clear清除内容
参考原文如下,有需要请转原文链接,写得很详细,本文主要为便捷查询所用,偏简略。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/whitedrogen/article/details/106216401