pip install selenium==3.3.0
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
option = webdriver.ChromeOptions()
option.add_argument('window-size=1920x3000') # 指定浏览器分辨率
option = webdriver.ChromeOptions( )
option.add_argument('window-size=1920x3000') # 指定浏览器分辨率
option.add_argument('--headless') #无头
option.add_argument('--disable-gpu')
option.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
option.add_argument('--proxy-server=http://127.0.0.1:1087') #添加代理
url='https:wwww.baidu.com'
driver = webdriver.Chrome(chrome_options=option)
driver.maximize_window() # 设置最大的窗口
driver.get(url) # 访问连接
driver.save_screenshot("baidu.png") # 截图
driver.page_source # 获取页面内容
driver.get_cookies() # 获取cookie
driver.current_url # 获取当前的url
dictCookies = driver.get_cookies()
cookies ={
"_routing_id":"46139510-8ede-424f-b63a-e8d7aa4bdfa4",
"sessionFunnelEventLogged":"1",
"_auth":"1",
"g_state":'{"i_l":0}',
"cm_sub":"allowed"
}
driver.get(url) # 请求
# 添加cookie
driver.add_cookie({'name':'_routing_id','value':cookies['_routing_id']})
driver.add_cookie({'name':'sessionFunnelEventLogged','value':cookies['sessionFunnelEventLogged']})
driver.add_cookie({'name':'_auth','value':cookies['_auth']})
driver.add_cookie({'name':'g_state','value':cookies['g_state']})
driver.add_cookie({'name':'cm_sub','value':cookies['cm_sub']})
#重新请求
driver.get(url)
# 删除一条cookie
driver.delete_cookie("CookieName")
# 删除所有的cookie
driver.delete_all_cookies()
driver.close() # 退出当前页面
driver.quit() # 退出浏览器
使用id值定位【By.ID 】
el = driver.find_element(By.ID, '')
el = driver.find_element_by_id()
使用xpath定位【By.XPATH】
el = driver.find_element(By.XPATH, '')
el = driver.find_element_by_xpath()
使用标签名定位【By.TAG_NAME】
el = driver.find_element(By.TAG_NAME, '')
el = driver.find_element_by_tag_name()
使用超链接文本定位【By.LINK_TEXT】
el = driver.find_element(By.LINK_TEXT, '')
el = driver.find_element_by_link_text()
使用部分超链接文本定位【By.PARTIAL_LINK_TEXT】
el = driver.find_element(By.PARTIAL_LINK_TEXT , '')
el = driver.find_element_by_partial_link_text()
使用name属性值定位【By.NAME】
el = driver.find_element(By.NAME, '')
el = driver.find_element_by_name()
使用class属性值定位【By.CLASS_NAME 】
el = driver.find_element(By.CLASS_NAME, '')
el = driver.find_element_by_class_name()
使用css选择器定位【By.CSS_SELECTOR】
el = driver.find_element(By.CSS_SELECTOR, '')
el = driver.find_element_by_css_selector()
查找输入框
input_name=driver.find_element(By.XPATH, '//input[@placeholder="Airport, country, hashtag, etc."]')
input_name.send_keys(point,Keys.ENTER) # 回车
查找兄弟的下一个文本数据
# 根据文本确认位置,在查询兄弟节点
text=driver.find_elements(By.XPATH,"//*[text()='Coordinates']/following-sibling::td")[0].text
获取页面html源码
html=driver.page_source
滚轮滑动
# 一次滑动
js = "window.scrollTo(0,800);"
driver.execute_script(js)
# 多次滑动
for i in range(10):
js='window.scrollBy(0,200)'
driver.execute_script(js)
代码 | 含义 |
---|---|
el.get_attribute(key) | 获取key属性名对应的属性值 |
el.text | 获取开闭标签之间的文本内容 |
el.click() | 对元素执行点击操作 |
el.submit() | 对元素执行提交操作 |
el.clear() | 清空可输入元素中的数据 |
el.send_keys(data,Keys.ENTER) | 向可输入元素输入数据,并且回车 |
import time
time.sleep(n)
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 10,0.5).until( EC.presence_of_element_located((By.ID, "myDynamicElement"))
# \设置最长等待时间10,在10秒内每隔0.5秒使用指定条件去定位元素,如果定位到元素则直接结束等待,如果在10秒结束之后仍未定位到元素则报错
driver.implicitly_wait(10) # 在指定的n秒内每隔一段时间尝试定位元素,如果n秒结束还未被定位出来则报错
current_windows = driver.window_handles
driver.switch_to.window(current_windows[1])
driver.switch_to.window(web.window_handles[-1])
driver.switch_to.window(current_windows[0])
driver.switch_to.frame(name/el/id)
alert = driver.switch_to_alert()
driver.forward()
driver.back()
driver.refresh()
driver.close()