官方api:http://selenium-python.readthedocs.io/api.html#
1、访问网页
from selenium import webdriver #声明浏览器对象,使用ie浏览器 brower=webdriver.Ie() brower.get('https://taobao.com') print(brower.page_source) #输出源代码 brower.close() #关闭浏览器2、查找单个元素
from selenium import webdriver #声明浏览器对象,使用ie浏览器 brower=webdriver.Ie() brower.get('https://taobao.com')
#id='q'是搜索框
#通过id选择元素 input_first=brower.find_element_by_id('q') #通过css选择器选择元素 input_second=brower.find_element_by_css_selector('#q') #通过xpath选择元素 input_third=brower.find_element_by_xpath('//*[@id="q"]') #这三个结果一样 print(input_first,input_second,input_third) brower.close() #查找方式有很多种 brower.find_element_by_name() brower.find_element_by_xpath() brower.find_element_by_id() brower.find_element_by_css_selector() brower.find_element_by_link_text() brower.find_element_by_tag_name()(2)通用的查找元素
from selenium import webdriver from selenium.webdriver.common.by import By #声明浏览器对象,使用ie浏览器 brower=webdriver.Ie() brower.get('https://taobao.com') input=brower.find_element(By.ID,'q') #By后面可换查找的类型 print(input) brower.close()3.查找多个元素
上诉的element更改为elements
4、对获取的元素调用交互方法
from selenium import webdriver import time #声明浏览器对象,使用ie浏览器 brower=webdriver.Ie() brower.get('https://taobao.com') input=brower.find_element_by_id('q') #指定搜索框 input.send_keys('iPhone') #搜索iphone time.sleep(1) #等待1秒 input.clear() #清空搜索框 input.send_keys('iPad') #搜索ipad button=brower.find_element_by_class_name('btn-search') #btn-search是搜索按钮 button.click() #点击按钮5、将动作附加到动作链中串行执行(自动实现拖、拽)
from selenium import webdriver from selenium.webdriver import ActionChains #声明浏览器对象,使用ie浏览器 brower=webdriver.Ie() url='http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable' brower.get(url) brower.switch_to_frame('iframeResult') #切换到fram,模拟拖拽 sourse=brower.find_element_by_css_selector('#draggable')#被拖拽的对象 target=brower.find_element_by_css_selector('#droppable')#拖拽的目标 actions=ActionChains(brower)#动作对象 actions.drag_and_drop(sourse,target)#进行拖拽 actions.perform()#执行动作更多操作: http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains
6、执行JavaScript(没有提供api如:实现进度条下拉),用js语言代替相关的api,相当于万能语言,可在网页上执行任何操作
from selenium import webdriver #声明浏览器对象,使用ie浏览器 brower=webdriver.Ie() url='https://www.zhihu.com/explore' brower.get(url) #下拉条拉倒最底层 brower.execute_script('window.scrollTo(0,document.body.scrollHeight)') #显示提示框 browe7、获取元素信息:属性
from selenium import webdriver #声明浏览器对象,使用ie浏览器 brower=webdriver.Ie() url='https://www.zhihu.com/explore' brower.get(url) #获取知乎logo图标的链接与class属性 logo=brower.find_element_by_id('zh-top-link-logo') print(logo) print(logo.get_attribute('class'))8、获取元素信息:文本
from selenium import webdriver #声明浏览器对象,使用ie浏览器 brower=webdriver.Ie() url='https://www.zhihu.com/explore' brower.get(url) input=brower.find_element_by_class_name('zu-top-add-question') print(input.text)获取id:input.id 获取在浏览器位置:input.location 获取标签的名字:input.tag_name
9、等待:隐式等待:当查找元素或元素没有立即出现的时候,隐式等待将等待一段时间再查找DOM,默认的时间为0(网速比较慢的时候)
brower=webdriver.Ie()
brower.implicitly_wait(10)#等待10秒
brower.get(url)
10、显示等待
rom selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait brower=webdriver.Ie() url='https://www.taobao.com' brower.get(url) wait=WebDriverWait(brower,10) #传入对象和等待时间 input=wait.until(EC.presence_of_element_located((By.ID,'q'))) #传入等待条件 #判断条件是否可点击 button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search'))) print(input,button)
11、控制网页的前进后退
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait brower=webdriver.Ie() brower.get('https://www.baidu.com') brower.get('https://www.taobao.com') brower.back() #后退 time.sleep(1) brower.forward() #前进 brower.close()12、选项卡的管理,包括添加,返回
import time from selenium import webdriver browser=webdriver.Ie() browser.get('https://www.baidu.com') browser.execute_script('window.open()') #添加选项卡 browser.switch_to_window(browser.window_handles[1])#切换到第2个选项卡 browser.get('https://www.taobao.com') time.sleep(1) browser.switch_to_window(browser.window_handles[0])#切换到第一个选项卡 browser.get('https://python.org')