web自动化(鼠标、键盘操作)

目录

一、鼠标操作

二、键盘操作

正文

一、鼠标操作

1.点击

 背景

以百度首页的设置--高级搜索 为例,需要先点击设置-->(才能)再点击高级搜索

在F12中可以搜素到,但是用程序进行元素定位时,却定位不到,如下:

结果:

 (高级搜索不是在页面中可以直接显示出来的)

 正常的步骤,应该给是先点击设置,再去定位高级搜索。

1).先移动鼠标到设置

2). 鼠标悬停setting元素

鼠标悬停知识点:动作链条ActionChains类

由源码,调用actionchains需要传入参数driver,并且要调用move_to_element()、perform()方法

perform()表示动作释放

 自动化代码实现:

import time
from selenium import webdriver
from selenium.webdriver import ActionChains

#初始化一个driver
driver = webdriver.Chrome()
#访问百度
driver.get("http://www.baidu.com")

driver.maximize_window()

#1.移动鼠标到设置上
setting = driver.find_element_by_id("s-usersetting-top")
#2.鼠标悬停setting元素
##动作链条ActionChains类
###初始化一个动作链条对象
actionchains = ActionChains(driver)
actionchains.move_to_element(setting).perform()

time.sleep(2)

#进行“高级搜索”定位
elem = driver.find_element_by_link_text("高级搜索")
elem.click()
time.sleep(2)
driver.quit()

※ perform()一定不能忘记,否则动作不会生效。

 2.拓展知识:ActionChains类里面有很多方法

1).click()点击

比如,在百度页面点击 设置按钮,如下:

from selenium import webdriver
from selenium.webdriver import ActionChains

#初始化一个浏览器对象
driver= webdriver.Chrome()

#打开百度首页
driver.get("http://www.baidu.com")

#最大化
driver.maximize_window()

#定位设置元素
set_elem = driver.find_element_by_id("s-usersetting-top")

#动作链条点击设置按钮
ActionChains(driver).click(set_elem).perform()

2).click_and_hold  点击不动------》    ActionChains(driver).click_and_hold(on_element).perform()

3.context_click  右击------》    ActionChains(driver).context_click(on_element).perform()

4.double_click 双击 ------》    ActionChains(driver).double_click(on_element).perform()

5.drag_and_drop 鼠标拖拽  ------》    ActionChains(driver).drag_and_drop(source,target).perform()

   看下鼠标拖拽的源码:两个参数(拖拽的起点、终点)、这个方法是2个方法组合起来使用的

    def drag_and_drop(self, source, target):
        """
        Holds down the left mouse button on the source element,
           then moves to the target element and releases the mouse button.

        :Args:
         - source: The element to mouse down.
         - target: The element to mouse up.
        """
        self.click_and_hold(source)
        self.release(target)
        return self

 一般直接用elem.click(),方便。不会直接用ActionChains的click()

3.链式调用

1)原理

再来看下perform()的源码

def move():
    print("移动")

def click():
    print("正在点击")

_actions = []
#列表中添加方法,注意添加方法,不加(),表示没有调用
_actions.append(move)
_actions.append(click)

def perform():
    for action in _actions:
        action()  #加(),调用_actions里面的方法

perform()

结果:

在perform()函数中,直接调用action(),action里面包含了两个方法。-------动作链,链式调用

2)ActionChains类里面,方法的返回值是什么?

perform()方法,没有返回值,因为perform是最后释放的,没有返回值。

click(),double_click() 、click_and_hold()、content_click()等,都是返回self,因为只有返回她自己,才能继续调用这个类里面的其他的方法。

*******所以链式调用的前提,要返回self,才能继续调用自己的方法。**********

二、键盘操作      74节

1.提交数据--elem.send_keys()

在百度首页输入框中输入待查询的字符,不点击“百度一下”,怎么才能进行查询呢?------》输入待查询字符后,按键盘的enter 键

语法:send_keys(keys.键名)

代码实现:

上面的例子,是只发送一个key,发送多个key,就再加个参数

elem.send_keys(Keys.CTRL,“c”) #发送ctrl+C

知识拓展:

除了鼠标点击“百度一下”,键盘输入“enter”键,还可以使用submit方法,进行查询

注意:使用submit(),提交的数据必须在form表单当中,否则是不生效的。

在对百度输入框input定位,是在form表单中的,所以可以用submit提交数据成功。

代码实现

总结:提交数据的3种方式--面试

1).定位 提交按钮,点击

2).发送回车按键enter

3).submit()   (提交的数据要在form表单中才能生效)

2.selec下拉菜单操作

1).方法1,点击option元素(先定位到option元素再click)

html页面,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>Python</p>
    <iframe src="http://www.baidu.com">
    </iframe>
    <div>
        下面是select下拉框
    </div>
    <select name="myselect">
        <option value="yuyan">彭于晏</option>
        <option value="huge">胡歌</option>
        <option value="luhan">鹿晗</option>
    </select>


</body>
</html>

下面对这个select下拉框中的胡歌进行元素定位,并选择,代码实现:

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://localhost:63342/study/%E9%94%AE%E7%9B%98%E6%93%8D%E4%BD%9C/selec_%E6%93%8D%E4%BD%9C.html?_ijt=195gg19fklt330n4as78hqc5up")

#使用xpath进行option定位
elem = driver.find_element_by_xpath('//option[@value="huge"]')
elem.click()

time.sleep(2)
driver.quit()

方法1的缺点:因为是直接定位select下拉option元素的,有时候需要加载,可能会定位不到。

所以用下面的select类的方法

2).方法2.使用Select类

①原理:先定位select元素,再进行选择value

import time
from selenium import webdriver
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.get("http://localhost:63342/study/%E9%94%AE%E7%9B%98%E6%93%8D%E4%BD%9C/selec_%E6%93%8D%E4%BD%9C.html?_ijt=tn971087iru6a73qsvg3tmg73u")

# #方法1.直接定位option元素,再点击
# #使用xpath进行option定位
# elem = driver.find_element_by_xpath('//option[@value="huge"]')
# elem.click()
#
# time.sleep(2)
# driver.quit()

#方法2.定位select元素,再选择option
elem = driver.find_element_by_name("myselect")
#将elem作为参数传给Select类
s = Select(elem)
s.select_by_value("huge")

time.sleep(2)
driver.quit()

选择option有3种方式,

通过value值选择:s.select_by_value("huge")    ----这里是value值

通过可见文本选择:s.select_by_visible_text(“胡歌”) -----这里是text文本,这里中文的

通过索引选择:s.select_by_index()     一般不用,前端改变option顺序,索引会发生变化

原文链接 https://www.cnblogs.com/ananmy/p/13503441.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web自动化测试是一种利用特定软件工具来模拟和自动执行人工操作的方法。这种测试方法可以增强测试效率,减少人力成本,并且能够提供更加准确和可靠的测试结果。 在进行Web自动化测试之前,首先需要通过编写测试脚本来规定测试的步骤和预期结果。这些脚本通常使用特定的脚本语言或者测试框架来编写,可以实现模拟鼠标点击、键盘输入等操作。通过编写脚本,可以将人工操作转化为自动化测试的步骤,并且可以通过调整脚本来覆盖更多的测试场景。 当测试脚本编写完成后,可以使用特定的自动化测试工具来执行测试脚本。这些工具可以模拟用户的操作,自动打开浏览器,输入URL,点击特定链接或按钮,并检查页面的显示和行为是否符合预期。通过这种方式,可以快速、高效地执行大量的测试用例,覆盖更多的功能和场景,从而提高测试的覆盖率和准确性。 与人工操作相比,Web自动化测试具有以下优势: 1. 提高测试效率:自动化测试可以快速执行大量的测试用例,减少了人工操作的时间和成本,提高了测试的效率。 2. 提高测试准确性:自动化测试可以准确地模拟和执行人工操作,避免了人为因素对测试结果的影响,提供了更加准确和可靠的测试结果。 3. 扩展测试覆盖范围:通过自动化测试,可以覆盖更多的测试场景和功能,提高测试的覆盖率和全面性。 4. 便于重复执行:自动化测试可以重复执行相同的测试用例,确保每次测试的一致性和可靠性。 然而,Web自动化测试也存在一些局限性。例如,对于一些动态变化的Web页面或者需要复杂交互的功能,自动化测试可能无法准确地模拟人工操作,需要手动操作或者进行人工验证。因此,自动化测试应用于Web测试时,需要根据具体的测试需求和场景进行综合考虑,确保测试的准确性和覆盖率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值