Python selenium 使用

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()

11 得到cookie

 

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);   
            })();   
    """)

http://www.waitingfy.com/archives/3623

3623

Leave a Reply

Name and Email Address are required fields.
Your email will not be published or shared with third parties.