当前位置 博文首页 > 个人微信:xiaobotester,添加进行学习交流请备注。 个人微信公

    个人微信:xiaobotester,添加进行学习交流请备注。 个人微信公

    作者:[db:作者] 时间:2021-07-03 13:04

    浏览器操作

    • 控制浏览器窗口大小

    浏览器设置最大化

    driver.maximize_window()

    设置浏览器显示大小

    driver.set_window_size(1480,?800)

    • 控制浏览器前进后退

    后退:driver.back()

    前进:driver.forward()

    效果演示:

    ?

    • 模拟浏览器刷新

    driver.refresh()
    

    简单的元素操作

    最常用的几个方法:

    • clear()????清除文本

    • send_keys(*values)????模拟按键输入

    • click()????单击元素

    • submit()????用于提交表单,有时候可以与click()方法互换使用

    获取元素的某些属性:

    size:????返回元素的尺寸

    text:????返回元素的文本

    get_attribute(name):????获得属性值

    is_displayed():?????获取该元素是否用户可见

    is_enabled():????判断元素是否可用

    is_selected():????判断元素是否被选中

    ?

    模拟鼠标操作

    由于现在web端页面提供了更丰富的鼠标交互方式,因此,在做UI自动化的过程中可能会用到鼠标的右击、双击、悬停、甚至是鼠标拖动等功能。这些在WebDriver 中都是支持的,基于鼠标的相关操作方法都封装在ActionChains类中。

    以python为例,需要先导入对应的包:

    from selenium.webdriver.common.action_chains import ActionChains

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

    • perform():执行所有ActionChains中存储的行为

    • context_click():????右击

    • double_click():????双击

    • drag_and_drop():????拖动

    • move_to_element():????鼠标悬停

    • drag_and_drop(source,target):????鼠标拖放操作,在source元素上按住鼠标左键,然后移动到target目标元素上释放

    • click_and_hold():????鼠标左键按住不放

    • release():?释放鼠标

    使用案例:

    所有鼠标的操作,最后都要调用perform()方法进行最后的执行。

    ?

    模拟键盘操作

    之前介绍过,可以通过send_keys()方法用来模拟键盘输入,除此之外,还可以用它来输入键盘上的按键以及组合键。

    使用前,需要先导入keys类

    from selenium.webdriver.common.keys import Keys

    send_keys()方法用来模拟键盘输入,常用的键盘操作:

    send_keys()方法用来模拟键盘输入,常用的键盘操作:

    • send_keys(Keys.BACK_SPACE) 删除键(BackSpace)

    • send_keys(Keys.SPACE) 空格键(Space)

    • send_keys(Keys.TAB) 制表键(Tab)

    • send_keys(Keys.ESCAPE) 回退键(Esc)

    • send_keys(Keys.ENTER) 回车键(Enter)

    • send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)

    • send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)

    • send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)

    • send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)

    • send_keys(Keys.F1) 键盘 F1

    • ……

    • send_keys(Keys.F12) 键盘 F12

    设置元素等待

    WebDriver提供了两种类型的等待:显示等待和隐式等待

    显示等待:

    显示等待使WebDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)。这个是针对特定元素设置的

    具体用法:

    from selenium.webdriver.support.wait import WebDriverWaitWebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)timeout:最长超时时间,单位默认为秒poll_frequency:检测的间隔时间,默认0.5秒

    WebDriverWait()一般与until()或until_not()方法配合使用,常见用法:???????

    from selenium.webdriver.support import expected_conditions as ECWebDriverWait(driver,?20,?0.5).until(EC.presence_of_element_located(locator))

    expected_conditions类提供的预期条件判断的方法:

    • title_is:判断当前页面的title是否完全等于(==)预期字符串,返回是布尔值

    • title_contains 判断当前页面的title是否包含预期字符串,返回布尔值

    • presence_of_element_located:判断某个元素是否被加到了dom树里,并不代表该元素一定可见

    • visibility_of_element_located : 判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0

    • visibility_of :跟上面的方法做一样的事情,只是上面的方法要传入locator,这个方法直接传定位到的element就好了

    • presence_of_all_elements_located : 判断是否至少有1个元素存在于dom树中。举个例子,如果页面上有n个元素的class都是'column-md-3',那么只要有1个元素存在,这个方法就返回True

    • text_to_be_present_in_element : 判断某个元素中的text是否 包含 了预期的字符串

    • text_to_be_present_in_element_value:判断某个元素中的value属性是否 包含 了预期的字符串

    • frame_to_be_available_and_switch_to_it : 判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False

    • invisibility_of_element_located : 判断某个元素中是否不存在于dom树或不可见

    • element_to_be_clickable : 判断某个元素中是否可见并且是enable的,这样的话才叫clickable

    • staleness_of :等某个元素从dom树中移除,注意,这个方法也是返回True或False

    • element_to_be_selected:判断某个元素是否被选中了,一般用在下拉列表

    • element_selection_state_to_be:判断某个元素的选中状态是否符合预期

    • element_located_selection_state_to_be:跟上面的方法作用一样,只是上面的方法传入定位到的element,而这个方法传入locator

    • alert_is_present : 判断页面上是否存在alert

    隐式等待:

    隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,即整个页面的加载时间;

    用法:driver.implicitly_wait(10),如果不设置默认为0

    sleep休眠方法:

    通过导入time模块的方法,强制固定时间的休眠,比如停留X秒之后再继续操作。用法:???????

    import timetime.sleep(5)??#停留5秒以后再继续操作

    ?

    frame/iframe/window切换

    1、有时候页面会经常遇到frame/iframe嵌套,WebDriver只能在一个页面上对元素识别与定位,这个时候需要切换到相应的frame/iframe里面。

    用法:driver.switch_to_frame(element)

    2、有时候点某个链接,会跳转到一个新的页签,这个时候需要切换到新打开的页签中才能继续操作。

    用法:driver.switch_to_window(element)

    ?

    alert、confirm以及prompt弹窗处理

    处理JavaScript所生成的alert、confirm以及prompt弹窗用法如下:

    使用driver.switch_to.alert方法定位到alert/confirm/prompt,然后使用text/accept/dismiss/send_keys等方法进行操作。

    注意:在selenium2的版本中可能会出现教大家用driver.swicth_to_alert()方法去定位的,在selenium3中已经改为了driver.switch_to.alert

    • text:返回alert/confirm/prompt中的文字信息

    • accept():接受现有警告框,类似于确定操作

    用法演示:???????

    print(driver.switch_to.alert.text)driver.switch_to.alert.accept()

    ?

    • dismiss():解散现有警告框,类似于取消

    • send_keys():发送文本至警告框

    注意:??????

    driver.switch_to.alert.send_keys('hello world')   #只对prompt有效driver.switch_to.alert.accept()  #确认driver.switch_to.alert.dismiss()  #取消

    ?

    猜你喜欢:

    Selenium工具的各个组件以及演变历史你都了解吗

    什么样的项目适合UI自动化测试

    Selenium之页面元素定位

    cs