一、Actions
1.Actions action=new Actions();
创建Actions类实例,专门封装复杂用户交互操作(如鼠标悬停、拖拽、减排组合键等)
2.Actions类的方法需调用perform()才会执行
3.用于执行交互场景
4.简单的大小写切换无需使用Actions ,kw.sendKeys(Keys.SHIFT,"aacc");即可;但如果需要模拟大小写来回切换,就需要用到actions.click(kw).keyDown(Keys.SHIFT).sendKeys("acc").perform(); 和keyUp()
二、提交 click()与submit()的区别
1.click():
(1)所有可点击的元素 按钮、链接、复选框等
(2)适用场景:点击普通按钮、关闭弹窗、切换选项卡
(3)需要定位到按钮
2.submit()
(1)仅适用于表单内元素
(2)触发所在表单的提交动作(即使元素本身不是提交按钮,只要在 <form> 内,调用 submit() 会提交整个表单)
(3)适用场景:提交表单:登录、注册、文件上传后的提交
3.例
比如 定位到搜索框 输入内容后想搜索,可行方法
(1)定位到"搜索"按钮,.click()
(2)还是这个搜索框的位置元素(无需定位按钮),.submit()
(3)回车键 .sendKeys(Keys.ENTER)
三、JS强制点击与Selenium显式等待
1.当Selenium的click()方法因为元素不可见、被遮挡时,可使用JS强制触发按钮点击
2.JS强制点击跟显式等待作用不同
(1)显式等待是等待元素加载完成 而JS强制点击,忽略可交互状态(如遮挡)
(2)显示等待是:等待元素可以正常点击;JS强制点击是不管是否能正常点击,只要元素存在就点击
3.两种显式等待:
(1)只等"加载完成"(元素出现在DOM里)
用ExpectedConditions.presenceOfElementLocated(...)
→ 只要元素在页面的HTML结构里存在,就算被藏起来/挡住,等待也会结束。
(2)等"加载完成+可交互"
用 ExpectedConditions.elementToBeClickable(...)
→ 要求元素不仅在DOM里,还要可见、没被遮挡、能点击,等待才会结束。