软件测试 | Web控件的交互进阶

测试人员在进行软件测试时,常需要模拟键盘或鼠标的操作,用测试代码实现模拟键盘或鼠标操作时,一般使用Python的ActionChains和Java的Actions来处理。

模拟鼠标的操作包括单击、双击、拖动等。测试程序中使用ActionChains或者Actions方法,实现模拟鼠标的操作。具体应用是,可以先将(单击、双击、拖动等)一些列动作按操作顺序存入队列。此时还没有触发执行上模拟鼠标的操作。程序想要触发执行上模拟鼠标的操作,需要调用ActionChains或者Actions方法下的perform()方法。perform()方法队列中的事件会一次执行上述操作。

1.引入依赖

我们使用ActionChains或者Actions方法时,需要先导入相对应的依赖,如下的Python版和Java版代码所示。

  • Python版本
#引入依赖
from selenium.webdriver import ActionChains
  • Java版本
import org.openqa.selenium.interactions.Actions;

2实战演练

(1)点击操作演示

下面代码中,action用以模拟键盘或鼠标的实例对象,on_element用以传递一个元素,默认值为None。

模拟键盘或鼠标操作时,如果在on_element中指定元素时,模拟操作时会单击指定位置的元素;如果不指定,模拟操作时会单击当前光标的位置。

  • Python版本
action.click(on_element=None)
  • Java版本
Actions action = new Action(webdriver);
action.click(on_elenium=None);

用鼠标模拟长按某个元素的操作代码如下(Python版和Java版)。

  • Python版本
action.click_and_hold(on_element=None)
  • Java版本
Actions action = new Actions(webdriver);
action.clickAndHold(on_element=None);

用鼠标模拟执行右键操作的代码如下(Python版和Java版)

  • Python版本
action.context_click(on_element=None)
  • Java版本
Actions action = new Actions(webdriver);
action.contextClick(on_element=None)

用鼠标模拟执行左键双击的代码如下(Python版和Java版)

  • Python版本
action.double_click(on_element=None)
  • Java版本
Actions action = new Actions(webdriver);
action.doubleClick(on_element=None);

模拟用鼠标拖曳起始的元素到目标元素的操作的代码如下(Python版和Java版)。

注:程序中的source代表起始元素,target代表目标元素。

  • Python版本
action.drag_and_drop(source,target)
  • Java版本
Actions action = new Actions(webdriver);
action.dragAndDrop(WebElement source,WebElement target);

模拟用鼠标将目标拖动到指定的位置的操作代码如下(Python版和Java版)。

  • Python版本
# xoffset 和 yoffset 是相对于source左上角为原点的偏移量
action.drag_and_drop_by_offset(source,xoffset,yoffset)
  • Java版本
Actions action = new Actions(webdriver);
action.dragAndDropBy(WebElement source,int xoffset,int yoffset);

(2)按键操作的演示

我们编程中使用key_down()或者keyDown()方法可以模拟某些组合键事件,如按下Ctrl+C组合键,如下是Python版和Java版演示代码。

  • Python版本
action.key_down(value,element=None)
  • Java版本
Action action = new Action(webdriver);
action.keyDown(element,value);

我们编程中使用key_up()或者keyUp()方法模拟松开键盘中某个按键,如按下Ctrl+C组合键并且释放,如下是Python版和Java版演示代码。

  • Python版本
ActionChains(driver).key_down(Keys.CONTROL\
     .send_keys('c').key_up(keys.CONTROL).perform())
  • Java版本
Actions action = new Actions(webdriver);
action.keyDown(keys.CONTROL).sendkeys("c").keysUp(keys.CONTROL).perform();

(3)移动光标操作的演示

把光标移动到某一个位置,需要用两个坐标标识起始和目标的位置,演示代码如下(Python版和Java版)。

  • Python版本
# xoffset 和 yoffset 是相对于网页左上角的偏移量
action.move_by_offset(xoffset,yoffset)
  • Java版本
Actions action = new Actions(webdriver);
action.moveByoffset(xoffset,yoffset);

将鼠标指针移动到指定元素的位置,演示代码如下(Python版和Java版)。

  • Python版本
action.move_to_element(to_element)
  • Java版本
Actions action = new Actions(webdriver);
action.moveToElement(to_element);

移动鼠标光标到相对于某个元素的便宜位置,演示代码如下(Python版和Java版)

  • Python版本
# xoffset 和 yoffset 是相对于网页窗口显示左上角的偏移量
action.moveToElement(to_element);
  • Java版本
Action action = new Actions(webdriver);
action.moveToElement(to_element,xoffset,yoffset);

(4)其他的操作

1)执行ActionChains中的操作

前面介绍的方法会将所有操作按顺序存入列队,要执行这些操作,需要调用perform()方法,演示代码如下(Python版和Java版)。

  • Python版本
action.move_to_element_with_offset(to_element,xoffset,yoffset).perform()
  • Java版本
Actions action = new Actions(webdriver);
Action.moveToElement(to_element,int xoffset,int yoffset).perform();

2)释放按下鼠标键的操作,演示代码如下(Python版和Java版)。

  • Python版本
Actions action = new Actions(webdriver);
action.release(on_element=None)

3)向焦点元素位置输入值

焦点元素就是,我们使用Tab键移动光标时,那些被选中的元素。向焦点元素位置输入值的演示代码如下(Python版和Java版)。

  • Python版本
action.send_keys(*keys_to_send)
  • Java版本
Actions action = new Actions(webDriver);
Action.sendkeys(*keys_to_send)

4)向指向的元素输入数据,演示代码如下(Python版和Java版)。

  • Python版本
Action.send_keys_to_element(element,*keys_to_send)
  • Java版本
Actions action = new Actions(webDriver);
action.sendkeys(element,krys_to_send);

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 保证100%免费】

全套资料获取方式:点击下方小卡片自行领取即可

 

猜你喜欢

转载自blog.csdn.net/weixin_57794111/article/details/131596721