网站备案多少钱,登录注册入口,乐清高端网站建设,做网站怎么盈利在自动化测试中#xff0c;处理复杂的页面交互是常见的需求。例如#xff0c;应对动态加载的元素、处理弹窗与对话框、模拟拖放操作#xff0c;甚至在绘图板上进行绘图操作。 1 动态元素与弹窗处理
1.1 动态元素的加载与等待
动态页面可能会导致元素在操作时尚未完全加载处理复杂的页面交互是常见的需求。例如应对动态加载的元素、处理弹窗与对话框、模拟拖放操作甚至在绘图板上进行绘图操作。 1 动态元素与弹窗处理
1.1 动态元素的加载与等待
动态页面可能会导致元素在操作时尚未完全加载为避免报错需要使用 Playwright 的自动等待机制或显式等待功能。
示例等待动态加载的元素可见
page.navigate(https://example.com/dynamic-content);
// 等待元素出现
page.waitForSelector(#dynamic-element, new Page.WaitForSelectorOptions().setState(WaitForSelectorState.VISIBLE));
String dynamicText page.textContent(#dynamic-element);
System.out.println(动态元素内容: dynamicText);1.2 处理弹窗与对话框
示例处理浏览器的弹窗
page.onDialog(dialog - {System.out.println(弹窗内容: dialog.message());dialog.accept(); // 点击确认
});
page.click(#trigger-dialog);示例输入对话框内容
page.onDialog(dialog - {if (dialog.type().equals(prompt)) {dialog.accept(输入的值);}
});
page.click(#trigger-prompt);2 模态窗口与对话框的操作
模态窗口Modal Dialog是网页常用的交互形式通常在特定操作后出现且会阻止用户与其他页面元素交互。
2.1 处理模态窗口
示例验证模态窗口内容
// 点击触发模态窗口的按钮
page.click(#open-modal);
// 等待模态窗口的内容加载
page.waitForSelector(#modal-content);
String modalText page.textContent(#modal-content);
System.out.println(模态窗口内容: modalText);
// 关闭模态窗口
page.click(#close-modal);2.2 模态窗口中的表单操作
示例在模态窗口中填写表单并提交
page.click(#open-modal);
// 等待表单加载
page.waitForSelector(#modal-form);
page.fill(#modal-form #username, testuser);
page.fill(#modal-form #email, testexample.com);
page.click(#modal-form button[typesubmit]);3 拖放操作与绘图板模拟
3.1 实现拖放操作
拖放操作在处理交互性强的页面时十分重要例如拖拽文件、重排序列表等。
示例拖放操作
// 定位拖放的起始元素和目标元素
Locator source page.locator(#draggable);
Locator target page.locator(#droppable);
// 执行拖放操作
source.dragTo(target);3.2 在绘图板上模拟绘图
绘图板Canvas是一种 HTML 元素用于实现图形绘制和用户绘图。本示例通过模拟鼠标事件绘制简单图形。
示例在 Canvas 上绘制直线
page.navigate(https://example.com/drawing-board);// 获取 Canvas 的位置和尺寸
BoundingBox canvasBox page.locator(#drawing-canvas).boundingBox();// 模拟绘制一条直线
page.mouse().move(canvasBox.x 10, canvasBox.y 10);
page.mouse().down();
page.mouse().move(canvasBox.x 100, canvasBox.y 100);
page.mouse().up();4 自定义元素选择器
在某些复杂页面中默认的选择器可能无法满足需求。Playwright 支持自定义选择器帮助精准定位元素。
4.1 使用文本选择器
示例通过文本内容选择元素
Locator button page.locator(text提交);
button.click();4.2 使用 CSS 和 XPath
示例通过 CSS 选择器定位元素
Locator element page.locator(div.container ul li:nth-child(2));
System.out.println(元素文本: element.textContent());示例通过 XPath 定位元素
Locator element page.locator(xpath//ul/li[contains(text(), 示例)]);
System.out.println(元素文本: element.textContent());4.3 自定义选择器引擎
如果标准选择器无法满足需求可以注册自定义选择器引擎。
示例注册自定义选择器引擎
page.context().registerSelectorEngine(my-engine, new MySelectorEngine());
Locator customElement page.locator(my-enginemy-selector);
customElement.click();5 实际案例复杂页面元素交互
案例描述处理动态加载、弹窗和拖放操作的综合场景
动态加载页面等待加载完成。处理弹窗确认操作。拖放元素完成指定任务。
综合案例代码
page.navigate(https://example.com/complex-interaction);// 等待动态元素加载
page.waitForSelector(#dynamic-content);
System.out.println(动态内容: page.textContent(#dynamic-content));// 触发并处理弹窗
page.onDialog(dialog - {System.out.println(弹窗信息: dialog.message());dialog.accept();
});
page.click(#trigger-dialog);// 拖放操作
Locator draggable page.locator(#draggable);
Locator droppable page.locator(#droppable);
draggable.dragTo(droppable);
System.out.println(拖放完成);