资料:1、67道 Python自动化面试题_Python热爱者的博客-CSDN博客_python自动化面试题
100道Python面试题总结_Python热爱者的博客-CSDN博客_python面试题100道
1、Action Chains类
from selenium.webdriver.common.action_chains import ActionChains
首先需要实例化,然后调用其中的方法,完成相应的操作。
下面是一些常用的模拟鼠标的操作
- click(on_element=None)
鼠标单击 - click_and_hold(on_element=None)
鼠标单击并且按住不放 - context_click(on_element=None)
右击 - double_click(on_element=None)
双击 - drag_and_drop(source, target)
拖拽 - drag_and_drop_by_offset(source, xoffset, yoffset)
将目标拖动到指定的位置 -
key_down(value, element=None)
按住某个键,使用这个方法可以方便的实现某些快捷键,比如下面按下Ctrl+c键 -
ActionsChains(browser).key_down(Keys.CONTROL).send_keys('c').perform()
key_up(value, element=None)
松开某个键,可以配合上面的方法实现按下Ctrl+c并且释放。
- move_by_offset(xoffset, yoffset)
指定鼠标移动到某一个位置,需要给出两个坐标位置 - move_to_element(to_element)
将鼠标移动到指定的某个元素的位置 - move_to_element_with_offset(to_element, xoffset, yoffset)
移动鼠标到某个元素位置的偏移位置 - perform()
将之前的一系列的ActionChains执行 - release(on_element=None)
释放按下的鼠标 - send_keys(*keys_to_send)
向某个元素位置输入值 -
send_keys_to_element(element, *keys_to_send)
向指定的元素输入数据 -
2
2、延迟等待
延时等待分为三种,分别是:硬性等待、隐式等待、显示等待
1.强制等待:
import time
time.sleep(5)
不管浏览器是否加载完都需要等待5s
2.隐性等待:
driver.implicitly_wait(30)
等待时间到达后再执行下一步
隐性等待对整个driver 周期起作用
3.显性等待:
WebDriverWait需要配合until()和until_not()方法使用
如果提前检测到条件成立就结束等待。否则继续等待直到到超过设计的最长时间
等待可以和expected_conditions 结合起来使用。
3、EC类
1)expected_conditions.presence_of_element_located(locator)
判断一个元素存在于页面DOM树中,存在则返回元素本身,不存在则报错。
2)expected_conditions.element_to_be_clickable(locator)
判断某元素是否可访问并且可启用,比如能够点击,若可以则返回元素本身,否则返回False。locator为一个元祖(by, path)
3)expected_conditions.alert_is_present
判断alert是否存在,若存在则切换到alert,若不存在则返回false
4)expected_conditions.element_selection_state_to_be(element, is_selected)
判断某元素的选中状态是否与预期相同,相同则返回True,不同则返回False
5)expected_conditions.title_contains(title)
判断网页title是否包含特定文本(英文区分大小写),若包含则返回True,不包含返回False
等:详情可查找:Python + Selenium: expected_conditions介绍
Python + Selenium: expected_conditions介绍_kelanmomo的博客-CSDN博客
4、python中断言方法举例?
这里介绍几个常用断言的使用方法,可以一定程度上帮助大家对预期结果进行判断。
- assertEqual
- assertNotEqual
- assertTrue
- assertFalse
- assertIsNone
- assertIsNotNone
使用方法:
1、assertEqual(first,second,msg)其中first与second进行比较,如果相等则通过;
msg为失败时打印的信息,选填;
断言assertNotEqual反着用就可以了。
2、assertTrue(expr,msg)其中express输入相应表达式,如果表达式为真,则pass;
msg选填;
断言assertFalse如果表达式为假,则pass
3、assertIsNone和assertIsNotNone
使用方法:
- assertIsNone:不存在,则pass
- assertIsNotNone:存在,则pass
assertIsNone(obj,msg)检查某个元素是否存在
5、列出python中可变数据类型和不可变数据类型,并简述原理
不可变数据类型:
数值型、字符串型string和元组tuple
不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址)
可变数据类型:
列表list和字典dict
允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化。
相同的值在内存中可能会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。