Selenium
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'Fade Zhao' from selenium import webdriver import time from selenium.webdriver.common.keys import Keys url = "http://www.baidu.com" browser = webdriver.Chrome() # get的方式访问url browser.get(url) # 获取搜索框 element = browser.find_element_by_id('kw') # 清空搜索框 element.clear() # 在搜索框中输入信息 element.send_keys('剑来', Keys.ARROW_DOWN) # 开启搜索 element.send_keys(Keys.RETURN) time.sleep(1) # 获取第一个网页链接 ele_one = browser.find_element_by_xpath('//*[@id="1"]/h3/a') # 点击第一个页面 ele_one.click() # # 通过JS代码来实现将页面下拉 browser.execute_script(''' window.scrollTo(0,document.body.scrollHeight); ''') time.sleep(1) # 关闭之前的browser browser.close() # 拖拽 # 。略过 '''窗口和页面frame切换''' from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select browser = webdriver.Chrome() for handle in browser.window_handles: # 切换窗口 browser.switch_to_window(handle) url = 'http://www.w3school.com.cn/tiy/t.asp?f=html_select' browser.get(url) # 切换frame browser.switch_to.frame(1) # select下拉框 select = Select(browser.find_element(By.XPATH,'//select')) # 根据索引、value值、文本值进行选择 select.select_by_index(1) time.sleep(0.5) select.select_by_value('opel') time.sleep(0.5) select.select_by_visible_text('Audi') # 如果select中的multiple="multiple",也就是说这个select支持多选 # 取消所有选项 select.deselect_all() # 获取所有选项 select.options() # 获取已选中 select.all_selected_options() select.select_by_index(1) # 从frame中切换出来 browser.switch_to.default_content() browser.quit() # 更多frame:http://blog.csdn.net/huilan_same/article/details/52200586 '''弹窗处理''' url ='http://www.w3school.com.cn/tiy/t.asp?f=hdom_alert' browser.get(url) browser.switch_to.frame('i') # 点击弹出alert的button browser.find_element(By.XPATH,'//input[1]').click() time.sleep(1) # 切换到alert alert = browser.switch_to.alert() alert.accept() # 更多alert:http://blog.csdn.net/huilan_same/article/details/52298460 browser.quit() '''Cookie''' driver = webdriver.Chrome() driver.get("http://www.youdao.com") # 获得cookie信息 cookie = driver.get_cookies() #将获得cookie的信息打印 print(cookie) # 添加cookie driver.add_cookie({'name':'key-aaaaaaa', 'value':'value-bbbb'}) # 删除cookies driver.delete_all_cookies() # 删除特定cookie driver.delete_cookie("CookieName") '''等待''' # 由于现在很多网站都采用的是Ajax加载技术,不确定网页元素什么时候能被完全加载,所以网页元素的选取会比较困难,这时候就需要等待了 # Selenium提供了两种等待方式:"显式"等待 、"隐式"等待 from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver = webdriver.Firefox() driver.implicitly_wait(10) # 隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者 driver.get('https://huilansame.github.io') locator = (By.LINK_TEXT, 'CSDN') try: WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator)) print(driver.find_element_by_link_text('CSDN').get_attribute('href')) finally: driver.close() # 隐式等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。注意这里有一个弊端,那就是程序会一直等待整个页面加载完成,也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步,但有时候页面想要的元素早就在加载完成了,但是因为个别js之类的东西特别慢,我仍得等到页面全部完成才能执行下一步,我想等我要的元素出来之后就下一步怎么办?有办法,这就要看selenium提供的另一种等待方式——显性等待wait了。 from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(30) # 隐性等待,最长等30秒 driver.get('https://huilansame.github.io') print(driver.current_url) driver.quit()