selenium定位弹出窗口,selenium下拉框定位方法
弹出框是自动化测试中的一个常见元素,通常伴随着客户端。下面这篇文章主要介绍Selenium定位浏览器弹出的方法的相关信息,通过一个示例代码非常详细的介绍。有需要的朋友可以参考一下。
00-1010前言1 .警告、确认、提示类型项目符号框1.1警告项目符号框1.2确认项目符号框1.3提示项目符号框2。div项目符号框3。新标签弹出窗口4。弹出框是iframe摘要。
目录
在Selenium自动化测试过程中,会定位到浏览器弹出窗口。根据弹出的原理,大致可以分为以下几种定位方式。
前言
这三种弹出框是JavaScript的核心对象window对象中的三种方法。
1.alert、confirm、prompt类型弹框
警告消息框的alert方法有一个参数,即要向用户显示的文本字符串。该字符串不是HTML格式。消息框为用户提供了一个关闭消息框的OK按钮,消息框是一个模态对话框,即用户在继续之前必须关闭消息框。
selenium处理alert() 提示框:
driver.switchTo()。alert();get alert alert . accept();单击alert . dissolve();单击alert . gettext();获取预警内容。警报项目符号框位置代码:
尝试{
Alert alert=driver.switchTo()。alert();//使用driver.switchTo()。alert()方法来获取警报对象。
Assert.assertEquals(项目符号框的实际文本,alert . gettext());//断言项目符号框文本是否与预期一致。
alert . accept();//点击确定。
//alert . dissolve();//点击取消
} catch(NoalertPresenceException){//如果不显示项目符号框,就会跑出异常。
Assert.fail(未找到尝试操作的警告框);
exception . printstacktrace();
}
或者官网推荐方法。
#单击链接激活警报
driver.find_element(By。LINK_TEXT,“查看示例警报”)。单击()
#等待警报显示,并将其存储在变量中
alert=wait . until(expected _ conditions . alert _ is _ present())
#将警报文本存储在变量中
文本=alert.text
#按下确定按钮
alert.accept()
1.1 alert弹框
确认消息框使用确认消息框询问用户“是或否”的问题,用户可以选择单击“确定”按钮或“取消”按钮。confirm方法的返回值为true或false。消息框也是一个模式对话框:用户必须响应这个对话框(单击一个按钮)并在继续下一步之前关闭它。
rong>selenium处理confirm() 提示框:
同alert一致
try{Alert alert =driver.switchTo().alert();
Assert.assertEquals("弹框实际文本", alert.getText());
alert.accept();
// alert.dismiss();
}catch(NoAlertPresentException exception){
Assert.fail("尝试操作的alert框没有被找到");
exception.printStackTrace();
}
或官网推荐方法
# Click the link to activate the alertdriver.find_element(By.LINK_TEXT, "See a sample confirm").click()
# Wait for the alert to be displayed
wait.until(expected_conditions.alert_is_present())
# Store the alert in a variable for reuse
alert = driver.switch_to.alert
# Store the alert text in a variable
text = alert.text
# Press the Cancel button
alert.dismiss()
1.3prompt弹框
提示消息框 提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个确定按钮和一个取消按钮。如果您提供了一个辅助字符串参数,则提示消息框将在文本字段显示该辅助字符串作为默认响应。否则,默认文本为 "<undefined>"。
selenium处理prompt() 提示框:
try{Alert alert =driver.switchTo().alert();
Assert.assertEquals("弹框实际文本", alert.getText());
alert.sendKeys("promt框中输入的内容");
alert.accept();
// alert.dismiss();
}catch(NoAlertPresentException exception){
Assert.fail("尝试操作的alert框没有被找到");
exception.printStackTrace();
}
或官网推荐方法
# Click the link to activate the alertdriver.find_element(By.LINK_TEXT, "See a sample prompt").click()
# Wait for the alert to be displayed
wait.until(expected_conditions.alert_is_present())
# Store the alert in a variable for reuse
alert = Alert(driver)
# Type your message
alert.send_keys("Selenium")
# Press the OK button
alert.accept()
2. div弹框
div弹窗是浏览器中比较好定位的弹窗,定位的方法与普通的元素一样。不过这里会有一个坑,明明可以找到这个按钮,但是就是定位不到。这个就是因为当前有div弹窗弹出的时候,需要设置一下等待时间,等页面元素加载完毕,再去做其他操作。这里用百度登陆为例子:
3. 新标签页弹窗
新标签页弹窗,则需要进行窗口的切换。
弹出内容是嵌入的窗口解决思路:
# 打印所有的handleall_handles = driver.window_handles
print(all_handles)
# 切换到新的handle上
driver.switch_to.window(all_handles[N])
其中,获取的句柄下标从0开始,即第一个窗口为[0]、第二个窗口为[1],如此类推。使用switch_to.window方法切换到新标签页后就可以做其他操作了。
此处第一个窗口打开百度首页,在打开一个新窗口打开京东首页,在两个窗口之间进行切换。切换到不同的窗口之后,就可以用常规的方法进行元素的定位。
4. 弹出框是iframe
driver.switch_to.frame("frame1")之后进行定位元素
具体定位方式查看我的另一篇博客:Selenium之定位及切换frame(iframe)
参考文章:
1.关于Python+selenium 定位浏览器弹窗元素
2.selenium定位弹框元素
3.https://www.jb51.net/article/156978.htm
4.selenium多个浏览器窗口
总结
到此这篇关于Selenium定位浏览器弹窗方法的文章就介绍到这了,更多相关Selenium定位浏览器弹窗内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。