python操作浏览器滚动条_python+selenium之浏览器滚动条操作

本文详细介绍了如何使用Python的Selenium库来操控浏览器的滚动条,包括将滚动条滚动到页面底部、顶部以及任意位置,以及如何在内嵌窗口中操作滚动条。同时,还展示了如何调整浏览器窗口大小、前进后退、刷新页面以及模拟鼠标和键盘事件,如右键点击、双击、拖放、键盘输入等操作。此外,还提及了处理警告框、上传文件、设置下载路径、操作Cookie和调用JavaScript等方面的功能。
摘要由CSDN通过智能技术生成

from selenium import webdriver

import time

#访问百度

driver=webdriver.Ie()

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

#搜索

driver.find_element_by_id("kw").send_keys("selenium")

driver.find_element_by_id("su").click()

time.sleep(3)

#将页面滚动条拖到底部

js="var q=document.documentElement.scrollTop=10000"

driver.execute_script(js)

time.sleep(3)

#将滚动条移动到页面的顶部

js="var q=document.documentElement.scrollTop=0"

driver.execute_script(js)

time.sleep(3)

#将页面滚动条移动到页面任意位置,改变等于号后的数值即可

js="var q=document.documentElement.scrollTop=50"

driver.execute_script(js)

time.sleep(10)

若要对页面中的提示警告窗口中的滚动条进行操作,要先定位到该内嵌窗口,在进行滚动条操作

设置浏览器大小:像素点

set_window_size(width,height)

maximize_window() 浏览器全屏显示,不带参数

控制浏览器前进、后退:

driver.forward()

driver.back()

模拟浏览器刷新:

driver.refresh()

from selenium import webdriver

driver = webdriver.Firefox()

driver.get(r"http://www.baidu.com/")

#参数是像素点宽,高

driver.set_window_size(800,800)

print("浏览器大小是800px,800px")

driver.find_element_by_link_text("新闻").click()

driver.back()     #返回前一个页面

driver.forward()  #前进前一个页面

driver.refresh()  #刷新当前页面

driver.find_element_by_css_selector("#ww").send_keys("python3")

driver.find_element_by_xpath("//*[@class='btn']").click()

driver.refresh()  #刷新当前页面

driver.quit()

clear()清除文本

send_keys("....") 模拟按键输入

click() 单击元素,前提是它是可以被单击的对象。

另外click()方法不仅可以用于单击一个按钮,它还能可以单击任何可以单击的文字、图片、checkbox、radio、select下拉框等。

submit() 用于提交表单,同样可以用于提交一个按钮。

WebElement接口常用方法

先看例子:

from selenium import webdriver

driver = webdriver.Firefox()

driver.get(r"http://www.baidu.com/")

size = driver.find_element_by_name("wd").size

print(size)      #size属性,返回元素的尺寸,表单输入框之类的width、height等

text = driver.find_element_by_id("jgwab").text

print(text)      #text属性,获取元素的文本,可以用力判断打开的页面是否是预期的。

attribute = driver.find_element_by_xpath(".//input[@id='kw']").get_attribute('maxlength')

print(attribute) #get_attribute()方法可以获取属性值

result = driver.find_element_by_partial_link_text("京公网安备").is_displayed()

print(result)   #is_displayed() 元素是否设置可见,可见返回true则false

driver.quit()

size属性返回元素尺寸

text属性返回元素文本

get_attribute()方法获取属性值

is_displayed()方法返回该元素是否设置可见

鼠标事件

对鼠标的操作:右击、双击、悬停、鼠标拖动等功能,

webdriver中对鼠标的操作的方法封装在ActionChains类中 ,使用前要先导入ActionChains类:

from selenium.webdriver.common.action_chains import ActionChains

ActionChains类提供的鼠标操作常用方法:

context_click()               右击

double_click()                双击

drag_and_drop()          拖动

move_to_element()     鼠标悬停

perform()                        执行所有ActionChains类中存储的行为,可以理解为对整个操作的提交动作

鼠标右键操作

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains  #导入ActionChains类

driver = webdriver.Firefox()

driver.get(r"https://yunpan.360.cn/")

driver.maximize_window ()

driver.find_element_by_xpath("//*[@name='account']").clear()

driver.find_element_by_xpath("//*[@name='account']").send_keys("username.com")

driver.find_element_by_name("password").clear()

driver.find_element_by_name("password").send_keys("pwd")

driver.find_element_by_xpath("//*[@id='login']/div/div[2]/form/p[4]/label/input").click()

driver.find_element_by_xpath("//*[@id='login']/div/div[2]/form/p[5]/input").click()

#定位到需要右击的元素

right_click = driver.find_element_by_link_text("jemeter")

#对定位到的元素执行鼠标邮件操作,调用ActionChains类,将浏览器驱动driver作为参数传入,context_click()需要指定元素位置

ActionChains(driver).context_click(right_click).perform()

鼠标双击操作

double_click()方法模拟鼠标双击操作

(单击查看详情,双击弹出修改页面就用这个方法模拟)

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Firefox()

driver.get(r"http://www.baidu.com/")

....

#定位需要双击的元素

double_click = driver.find_element_by_xpath("")

#对定位到的元素进行双击操作

ActionChains(driver).double_click(double_click).perform()

a = driver.find_element_by_class_name("")

ActionChains(driver).double_click(a).perform()

鼠标悬停

move_to_element()方法模拟鼠标悬停

from selenium import webdriver

import time

from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Firefox()

driver.get(r"http://www.baidu.com/")

driver.set_window_size(1000,1000)

#定位到悬停的元素

attrible = driver.find_element_by_link_text("设置")

#对定位到的元素进行悬停操作

ActionChains(driver).move_to_element(attrible).perform()

time.sleep(5)

driver.refresh()

以上3种鼠标操作用法相同!

其实在WebDriver中,提供了许多鼠标操作的方法,这些操作方法都封装在ActionChains类中,

包括鼠标右击、双击、悬停和鼠标拖动等功能。

ActionChains类提供的鼠标操作事件

context_click():点击鼠标右键

double_click():双击鼠标

drag_and_drop():拖动鼠标

move_to_element():鼠标悬停

鼠标悬停

页面上有些下拉菜单,在鼠标放到元素上以后,下面的菜单才会显示出来。下面的图片就是一个例子

百度首页上的设置项,下面的菜单默认不会显示,将鼠标停在上面后才会显示,这就是鼠标的悬停操作,菜单显示以后就可以对下面的项进行点击操作

进入搜索设置的代码

# -*- coding: utf-8 -*-

from selenium import webdriver

import time

driver = webdriver.Chrome()

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

time.sleep(3)

settings = driver.find_element_by_link_text('设置')

webdriver.ActionChains(driver).move_to_element(settings).perform()

time.sleep(1)

settings_search = driver.find_element_by_class_name('setpref')

settings_search.click()

time.sleep(3)

driver.close()

打开页面后,根据链接的文本信息找到设置项,使用ActionChains的move_to_element()方法将鼠标悬停在设置上,然后找到搜索设置项

鼠标的右击、双击和拖动事件都是通过上述的方法调用,只要将方法替换一下就可以了。

拖动事件需要传入两个参数,第一个参数是拖动的起点元素,第二个参数是终点元素

webdriver.ActionChains(driver).context_click("右击的元素定位").perform()  #右击事件

webdriver.ActionChains(driver).double_click("双击的元素定位").perform()  #双击事件

webdriver.ActionChains(driver).drag_and_drop("拖动的起点元素", "拖动的终点元素").perform()  #拖动事件

键盘事件

Keys类中提供了几乎所有的键盘事件,在鼠标事件中用到了两个键盘事件,

键盘的向下按键(send_keys(Keys.DOWN))和键盘的回车事件(send_keys(Keys.ENTER))。

键盘的事件需要导入Keys模块

from selenium.webdriver.common.keys import Keys

所有的键盘事件都包含在这个模块中,send_keys用来模拟键盘输入,除此之外,还可以用例模拟键盘上的按键,不仅支持单个的键盘按键,还支持组合按键输入

# -*- coding: utf-8 -*-

from selenium import webdriver

import time

driver = webdriver.Chrome()

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

time.sleep(3)

driver.find_element_by_id('kw').send_keys('selenium')  #在搜索框中输入"selenium"

d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值