python对浏览器的常用操作_python+selenium浏览器常用操作(一)

1、导入selenium自定义的webdriver、后续可通过调用此协议启动各大浏览器

from selenium import webdriver #浏览器

from selenium.webdriver.support.select import Select #下拉框

webdriver原理理解:客户端脚本(java、python、ruby)不能直接与浏览器进行沟通、webdriver在两者之间当作一个翻译官、它可以把客户端的代码翻译成浏览器可以识别的代码比如js传给浏览器、浏览器在把执行的结果返回给webdriver、webdriver把返回的结果做一些封装、一般都是json格式、然后返回给client(客户端)主要是桥梁作用

2、定义要访问的浏览器、以及访问的地址

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')

3、浏览器关闭、前进、后退、刷新

driver.close()#关闭当前焦点所在的页面

driver.quit()#完全退出并关闭浏览器

driver.forward()#前进

driver.back()#后退

driver.refresh()#刷新页面后当前页面的数据全部被清空

4、窗口最大化

driver.maximiza_window()

print(driver.get_window_size())#获取当前窗口的大小

5、获取浏览器属性的方法

print(driver.title) # 获取当前的值

print(driver.current_url) # 获取当前的浏览器地址

print(driver.page_source) # 获取页面的源码信息

print(driver.capabilities) # 获取字典类型

6、获取当前窗口的句柄

print(driver.window_handles) #获取当前所有的窗口、返回字符串

driver.switch_to.window(driver.window_handles[-1]) #切换窗口到最后一个页面

driver.switch_to.window(driver.window_handles[0]) #返回到原窗口

7、文本链接🔗driver.find_element_by_partial_link_text('新闻').click()

drive.back()

driver.find_element_by_link_text('地图').click()8、获取页面元素的基本信息======

9、判断页面元素是否可见is_displayed1 = (driver.find_element_by_partial_link_text('地图').is_displayed())

print("返回布尔值:", is_displayed1)

10、判断页面元素是否可操作is_displayed1 = (driver.find_element_by_partial_link_text('地图').is_enabled())

print("返回布尔值:", is_displayed1)

11、获取页面元素属性的内容

print(driver.find_element_by_partial_link_text('地图').get_attribute("name"))

12、获取页面元素的标签内容print(driver.find_element_by_partial_link_text('地图').get_property("textContent"))

get_property('innerHTML')# 获取元素内的全部HTMLget_property('outerHTML')# 获取包含选中元素的HTML

13、模拟鼠标键盘的复杂操作行为

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 和 yslider = 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 Keysdriver.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弹窗

756807-20190620165731737-822734415.png

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') # 嵌套的IDdriver.find_element_by_id('kw').send_keys('慧测')driver.find_element_by_id('su').click()

driver.switch_to.frame(0) # 嵌套的indexdriver.find_element_by_id('kw').send_keys('慧测')driver.find_element_by_id('su').click()

# 参数用elementfr = 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)')

#1、 精品推荐 标签 依次进行点击 取其中显示的所有价格 打印出来

driver.get('http://www.......')

labels= driver.find_elements_by_xpath('//div[@id="itemBest"]/h2/a')for e inlabels:

e.click()

time.sleep(1)

prices= driver.find_elements_by_xpath('//div[@id="show_best_area"]//font')for price inprices: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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值