Contents
1. headless模式初始化
chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') browser = webdriver.Chrome(chrome_options=chrome_options) wait = WebDriverWait(browser, 10)
2.打开一个URL
url = 'https://s.taobao.com/search?q=IPad' browser.get(url)
3. 等待直到什么元素可见或者可以点击
input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager div.form > input'))) submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager div.form > span.btn.J_Submit'))) wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#mainsrp-pager li.item.active > span'), str(page)))
4.输入框输入文字
input.clear() input.send_keys(page)
5. 按钮点击
submit.click()
6.得到html源码
html = browser.page_source
7.截图,裁剪
screenshot = self.browser.get_screenshot_as_png() screenshot = Image.open(BytesIO(screenshot)) captcha = screenshot.crop((left, top, right, bottom - PADDING_BOT)) captcha.save(name)
8.元素位置大小
img = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'dx_captcha_basic_bg'))) location = img.location size = img.size top, bottom, left, right = location['y'] , location['y'] + size['height'], location['x'], location['x'] + size['width']
9. 按住移动距离
ActionChains(self.browser).click_and_hold(slider).perform() for x in track: ActionChains(self.browser).move_by_offset(xoffset=x, yoffset=0).perform() time.sleep(0.5) ActionChains(self.browser).release().perform()
10 拖动
browser =webdriver.Chrome() browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') browser.switch_to.frame('iframeResult') # id = 'iframeResult' source = browser.find_element_by_css_selector('#draggable') # 被拖拽的对象 target = browser.find_element_by_css_selector('#droppable') # 目标对象 actions = ActionChains(browser) actions.drag_and_drop(source, target) actions.perform()
cookies = driver.get_cookies()
12.下拉滑动
def scroll(driver): driver.execute_script(""" (function () { var y = document.body.scrollTop; var step = 100; window.scroll(0, y); function f() { if (y < document.body.scrollHeight) { y += step; window.scroll(0, y); setTimeout(f, 50); } else { window.scroll(0, y); document.title += "scroll-done"; } } setTimeout(f, 1000); })(); """)3623