from selenium.webdriver import Chrome, ChromeOptions
# 1. 创建配置对象
options = ChromeOptions()
# 2. 添加配置
options.add_argument('--proxy-server=http://1.514.915.139:4531')
# 3.通过指定配置创建浏览器对象
b = Chrome(options=options)
b.get('https://movie.douban.com/top250')
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
b = Chrome(options=options)
b.get('https://www.jd.com')
如果没有设置隐式等待:在通过浏览器获取标签的时候,如果标签不存在会直接报错
如果设置了隐式等待:在通过浏览器获取标签的时候,如果标签不存在会直接报错,不会马上报错,而是在指定时间范围内不断尝试重新获取标签,直到获取到标签或者超时为止(如果超时会报错);
一个浏览器只需要设置一次隐式等待时间,它会作用于这个浏览器每次获取标签的时候。
from selenium.webdriver import Chrome, ChromeOptions
# 创建设置对象
options = ChromeOptions()
# 设置取消测试环境
options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 设置取消图片加载
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
b = Chrome(options=options)
b.get('https://www.jd.com')
# 1).设置等待时间
b.implicitly_wait(5)
print('===')
# 2).获取标签的时候隐式等待时间才会生效
input_tag = b.find_element_by_id('key')
input_tag.send_keys('电脑')
等到某个条件成立或者不成立为止
首先创建等对象WebDriverWait(浏览器对象, 超时时间)
添加等待条件
常用的条件:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 等待10s 等到输入框输入电脑,就继续执行
wait = WebDriverWait(b, 10)
wait.until(EC.text_to_be_present_in_element_value((By.ID, 'key'), '电脑'))
print('继续执行')
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
wait = WebDriverWait(b, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#J_goodsList div.gl-i-wrap')))
print(b.page_source)