一些必要的库:
from selenium import webdriver #导入webdriver库 驱动浏览器
from selenium.webdriver.common.keys import Keys #调用键盘的库
import time#sleep用
from selenium.webdriver.support.ui import WebDriverWait #循环等待,显式等待
from selenium.webdriver.support. import expected_condition as EC #负责条件模块
浏览器:
driver= webdriver.Chrome( ) #打开谷歌浏览器,driver就代表这个浏览器
driver.get(‘ ’) #打开某个网站
driver.quit( ) #关闭浏览器
定位元素:
driver.find_element_id(' ')#定位某个元素(通过id属性)
driver.find_element_xpath(' ')#定位某个元素(通过xpath属性)【copy xpath】【绝对定位】
其它:
- find_element_by_id
- find_element_by_name
- find_element_by_xpath
- find_element_by_link_text
- find_element_by_partial_link_text
- find_element_by_tag_name
- find_element_by_class_name
- find_element_by_css_selector
定位多个元素只需将element该为elements就可定位(返回一个list)
对定位的元素操作:
xx.send_keys(' ')#模仿键盘在xx输入啥(若输入中文则要加u)
xx.click( )#模仿点击xx
xx.clear( ) #一般用在输入框中,清楚框框里的内容
xx.get_attibute('textContent') #获取该元素内所有标签< >后方的文字 , 返回值为str
xx.get_attribute('innerHTML') #获取该元素内所有html
xx.get_attribute('outerHTML') #获取包含选中元素的HTML,即既包含该元素内的html又包含上一层的html
xx.get_attribute(‘标签中的属性') #获取该元素标签中< >该属性的值
浏览器窗口:
driver.window_handles #获取浏览器所有的窗口【句柄】(是一个list)
driver.swich_to.window( 想要操作的句柄) #切换窗口
driver.close() #关闭当前句柄/窗口 (driver关闭后为空)
显式等待:
time.sleep(秒) #延迟几秒 (time库)
WebDriverwait( , ).until( )#等待该元素出现并定位,如果没定位到则会抛出超时异常TimeoutException
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
) # 10秒内不断加载页面,直到找到有这个id的元素或超时,并且定位这个元素为element
EC. xxx #判断传入标题和获取的标题
xxx如下:
- title_is #完全相等
- title_contains #获取的包含传入的
- #判断元素是否加载成功
- presence_of_element_located (By.xxx,"该元素某个属性")
- presence_of_all_elements_located
- #判断元素是否可见
- invisibility_of_element_located
- visibility_of_element_located
- visibility_of
- #判断文本是否出现在某元素里面
- text_to_be_present_in_element ((By.xxx,"该元素某个属性"),“文本内容”)
- text_to_be_present_in_element_value
- #判断frame是否可以切入
- frame_to_be_available_and_switch_to_it
- #判断元素是否可点击
- element_to_be_clickable ((By.xxx,"该元素某个属性"))
- #判断是不是还在DOM里面
- staleness_of
- #判断元素是否被选中
- element_to_be_selected
- element_located_to_be_selected
- element_selection_state_to_be
- element_located_selection_state_to_be
- #判断是否有弹窗
- alert_is_present
By. 后面也可以有很多种(用于presence【目前只碰过这个】)
- ID
- NAME
- XPATH
- LINK_TEXT
- PARTIAL_LINK_TEXT
- TAG_NAME
- CLASS_NAME
- CSS_SELECTER
获取cookies:
driver.get_cookies() #获取cookies (不清楚)
输出网页源代码:
driver.page_source
xx.text:
返回xx元素的内容
selenium官方文档:https://selenium-python.readthedocs.io/