滑动
last_height = driver.execute_script("return document.body.scrollHeight")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
按照文本寻找控件
https://stackoverflow.com/questions/35470171/click-button-by-text-using-python-and-selenium
https://stackoverflow.com/questions/12323403/how-do-i-find-an-element-that-contains-specific-text-in-selenium-webdriver-pyth
driver.find_elements_by_xpath("//*[contains(text(), 'My Button')]")
driver.find_element_by_xpath('//button[text()="Outliers"]')
设置页面加载超时时间
https://stackoverflow.com/questions/17533024/how-to-set-selenium-python-webdriver-default-timeout
driver.set_page_load_timeout(30)
模拟键盘输入(不需要控件的input)
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
title = 'hahaha'
actions.send_keys(title)
actions.perform()
字符串的cookie转换成selenium使用的字典
def get_formatted_cookie(cookie_str):
"""
传入浏览器的cookie字符串,返回selenium可用的cookie字典.
"""
l = cookie_str.split(';')
cookie_dict = {}
for item in cookie_str.split(';'):
name,value = item.split('=',1)
name=name.replace(' ','').replace('\r','').replace('\n','')
value = value.replace(' ','').replace('\r','').replace('\n','')
cookie_dict={
'name':name,
'value':value,
"domain": ".douyin.com", # google chrome
#"expires": "",
#'path': '/',
'httpOnly': True,
#'HostOnly': False,
'Secure': False
}
#pprint(cookie_dict)
yield cookie_dict
def main():
driver = webdriver.Chrome()
# 添加cookie(必须先访问该页面才可以添加).
url = 'http://www.baidu.com'
driver.get(url)
for cookie_dict in get_formatted_cookie(cookie_str):
try:
driver.add_cookie(cookie_dict)
except Exception as e:
print(f'添加cookie失败:{e}')
pprint(i)
return
# 这次访问才是携带cookie的
driver.get(url)
寻找元素以...开头或者结尾的
这个比较经常遇到,实际上也是xpath的部分。比如遇到<button class="primary-btn-20ab0c"></button>
这个后面的字符串是自动生成的,可以这样匹配:
driver.find_element_by_css_selector('div[class^="DraftEditor-root"]')
如果是匹配结尾,可以这样匹配:
driver.find_element_by_css_selector('div[class$="DraftEditor-root"]')
等待元素出现
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//input')))
等待url改变
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
WebDriverWait(driver, delay).until(lambda driver: driver.current_url == url)
最大化窗口
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_argument('window-size=2560,1440')
driver = webdriver.Chrome(chrome_options=options)
网友评论