一、导入selenium自定义的webdriver、后续可经过调用此协议启动各大浏览器
from selenium import webdriver #浏览器
from selenium.webdriver.support.select import Select #下拉框
webdriver原理理解:客户端脚本(java、python、ruby)不能直接与浏览器进行沟通、webdriver在二者之间看成一个翻译官、它能够把客户端的代码翻译成浏览器能够识别的代码好比js传给浏览器、浏览器在把执行的结果返回给webdriver、webdriver把返回的结果作一些封装、通常都是json格式、而后返回给client(客户端)主要是桥梁做用
二、定义要访问的浏览器、以及访问的地址
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
三、浏览器关闭、前进、后退、刷新
driver.close()#关闭当前焦点所在的页面
driver.quit()#彻底退出并关闭浏览器
driver.forward()#前进
driver.back()#后退
driver.refresh()#刷新页面后当前页面的数据所有被清空
四、窗口最大化
driver.maximiza_window()
print(driver.get_window_size())#获取当前窗口的大小
五、获取浏览器属性的方法
print(driver.title) # 获取当前的值
print(driver.current_url) # 获取当前的浏览器地址
print(driver.page_source) # 获取页面的源码信息
print(driver.capabilities) # 获取字典类型
六、获取当前窗口的句柄
print(driver.window_handles) #获取当前全部的窗口、返回字符串
driver.switch_to.window(driver.window_handles[-1]) #切换窗口到最后一个页面
driver.switch_to.window(driver.window_handles[0]) #返回到原窗口
七、文本连接🔗
driver.find_element_by_partial_link_text('新闻').click()
drive.back()
driver.find_element_by_link_text('地图').click()
八、获取页面元素的基本信息======
九、判断页面元素是否可见
is_displayed1 = (driver.find_element_by_partial_link_text('地图').is_displayed())
print("返回布尔值:", is_displayed1)
十、判断页面元素是否可操做
is_displayed1 = (driver.find_element_by_partial_link_text('地图').is_enabled())
print("返回布尔值:", is_displayed1)
十一、获取页面元素属性的内容
print(driver.find_element_by_partial_link_text('地图').get_attribute("name"))
十二、获取页面元素的标签内容print(driver.find_element_by_partial_link_text('地图').get_property("textContent"))
get_property('innerHTML')# 获取元素内的所有HTML
get_property('outerHTML')# 获取包含选中元素的HTML
1三、模拟鼠标键盘的复杂操做行为
1)导入支持双击操做的模块
from selenium.webdriver.common.action_chains import ActionChains
2)建立实例
ac=ActionChains(driver)
1.1鼠标双击操做 (好比某一个按钮须要连续点击两次才可显示内容)
button = driver.find_element_by_class_name('double')
ac.double_click(button).perform()#双击后 点击执行
1.2鼠标移动到页面元素
button = driver.find_elements_by_class_name('over')
ac.move_to_element('button').perform()#移动 点击执行
1.3综合操做
button1 = driver.find_element_by_class_name('double')
button2 = driver.find_element_by_class_name('over')
ac.double_click(button1)#双击
ac.perform()#执行
ac.move_to_element(button2)#移动
ac.perform()#执行
1.4鼠标滑动、三种方式
方式一:点击且按住
slider = driver.find_element_by_xpath('//div[@id="slider"]/span[1]')
# 按住滑动的按钮
ac.click_and_hold(slider)
# 向右移动到confirm元素
confirm = driver.find_element_by_id('slider_confirm')
ac.move_to_element(confirm)
# 鼠标放开
c.release()
# 执行
ac.perform()
方式二:拖拽而且放开
slider = driver.find_element_by_xpath('//div[@id="slider"]/span[1]')
confirm = driver.find_element_by_id('slider_confirm')
ac.drag_and_drop(slider, confirm).perform()#开始目标、结束目标、执行
方式三:坐标拖拽x 和 y
slider = driver.find_element_by_xpath('//div[@id="slider"]/span[1]')
ac.drag_and_drop_by_offset(slider,1000,0).perform()
1.5模拟键盘按键、如Tab、Enter 导入键盘操做
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id('user').click()
ac.send_keys('我来了')
ac.send_keys(Keys.TAB)
ac.send_keys('我在这儿')
ac.send_keys(Keys.ENTER)
ac.send_keys('在这儿')
ac.perform()
1.6跳转到js弹窗

driver.find_element_by_class_name('alert').click()
driver.switch_to.alert.accept() #肯定 switch_to切换
driver.switch_to.alert.dismiss() #取消
driver.switch_to.alert.send_keys('我在这里') #输入可见的内容
1.7跳转 frame 嵌套的网页 进入的时候须要一层一层、出来时可直接跳转到最外层
driver.switch_to.frame('aa') # 嵌套的ID
driver.find_element_by_id('kw').send_keys('慧测')
driver.find_element_by_id('su').click()
driver.switch_to.frame(0) # 嵌套的index
driver.find_element_by_id('kw').send_keys('慧测')
driver.find_element_by_id('su').click()
# 参数用element
fr = driver.find_element_by_id('aa')
driver.switch_to.frame(fr)
driver.switch_to.default_content() #跳转最外层
1.8植入Cookie ---免登录
driver.get('http://www.huicewang.com/ecshop')
driver.add_cookie({'name': '', 'value': ''})
driver.add_cookie({'name': '', 'value': ''})
driver.add_cookie({'name': '', 'value': ''})
driver.refresh()
1.9隐式等待时间
driver.implicitly_wait(10)
2.0植入js javascript
移除input的只读属性readonly
driver.get('file:///Users/chenhy/Documents/demo.html') #本地
driver.execute_script('document.getElementById("text").readOnly=false') true为只读
driver.find_element_by_id('text').send_keys('再向上')#修改信息
2.1滚屏
driver.execute_script('window.scrollTo(0,100)')
# 一、 精品推荐 标签 依次进行点击 取其中显示的全部价格 打印出来
driver.get('http://www.......')
labels = driver.find_elements_by_xpath('//div[@id="itemBest"]/h2/a')
for e in labels:
e.click()
time.sleep(1)
prices = driver.find_elements_by_xpath('//div[@id="show_best_area"]//font')
for price in prices:
print(int(price.text[1:-1]))
# 2 登陆、下订单
driver.get('http://www....')
driver.find_element_by_name('username').send_keys('222')
driver.find_element_by_name('password').send_keys('222')
driver.find_element_by_name('submit').click()
driver.get('http://www.huicewang.com/ecshop')
images = driver.find_elements_by_xpath('//div[@id="show_best_area"]/div[@class="goodsItem"]//img')
images[1].click()
driver.find_element_by_xpath('//li[@class="padd"]/a[1]').click()
driver.find_element_by_xpath('//form[@id="formCart"]/../table/tbody/tr/td[2]/a').click()
driver.find_element_by_xpath('//div[@id="ECS_ORDERTOTAL"]/../div[2]/input[1]').click()
print(driver.find_element_by_xpath('//*[@class="flowBox"]//font').text)