selenium如何实现定位弹出框,有几种定位方式
Admin 2022-08-10 群英技术资讯 1337 次浏览
这三种弹框是JavaScript核心对象window对象中的三种方法。
警告消息框 alert 方法有一个参数,即希望对用户显示的文本字符串。该字符串不是 HTML 格式。该消息框提供了一个“确定”按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,用户必须先关闭该消息框然后才能继续进行操作。
selenium处理alert() 提示框:
alert弹框定位代码:
try{ Alert alert =driver.switchTo().alert(); //使用driver.switchTo().alert()方法获取到alert对象 Assert.assertEquals("弹框实际文本", alert.getText()); //断言弹框文本是否和预期一致 alert.accept(); //点击确定 // alert.dismiss(); //点击取消 }catch(NoAlertPresentException exception){ //弹框未显示,则跑出异常 Assert.fail("尝试操作的alert框没有被找到"); exception.printStackTrace(); }
或官网推荐方法
# Click the link to activate the alert driver.find_element(By.LINK_TEXT, "See an example alert").click() # Wait for the alert to be displayed and store it in a variable alert = wait.until(expected_conditions.alert_is_present()) # Store the alert text in a variable text = alert.text # Press the OK button alert.accept()
确认消息框 使用确认消息框可向用户问一个“是-或-否”问题,并且用户可以选择单击“确定”按钮或者单击“取消”按钮。confirm 方法的返回值为 true 或 false。该消息框也是模式对话框:用户必须在响应该对话框(单击一个按钮)将其关闭后,才能进行下一步操作。
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 alert driver.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()
提示消息框 提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个“确定”按钮和一个“取消”按钮。如果您提供了一个辅助字符串参数,则提示消息框将在文本字段显示该辅助字符串作为默认响应。否则,默认文本为 "<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 alert driver.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()
div弹窗是浏览器中比较好定位的弹窗,定位的方法与普通的元素一样。不过这里会有一个坑,明明可以找到这个按钮,但是就是定位不到。这个就是因为当前有div弹窗弹出的时候,需要设置一下等待时间,等页面元素加载完毕,再去做其他操作。这里用百度登陆为例子:
新标签页弹窗,则需要进行窗口的切换。
弹出内容是嵌入的窗口解决思路:
# 打印所有的handle
all_handles = driver.window_handles
print(all_handles)
# 切换到新的handle上
driver.switch_to.window(all_handles[N])
其中,获取的句柄下标从0开始,即第一个窗口为[0]、第二个窗口为[1],如此类推。使用switch_to.window方法切换到新标签页后就可以做其他操作了。
此处第一个窗口打开百度首页,在打开一个新窗口打开京东首页,在两个窗口之间进行切换。切换到不同的窗口之后,就可以用常规的方法进行元素的定位。
driver.switch_to.frame("frame1")之后进行定位元素
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了通过Python 编程语言带您完成使用机器学习进行年龄和性别检测的任务。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
这篇文章主要介绍了Python类的定义与使用,类名只要是一个合法的标识符即可,但这仅仅满足的是 Python 的语法要求:如果从程序的可读性方面来看,Python 的类名必须是由一个或多个有意义的单词连缀而成的,下文基于这些基础内容展开介绍,需要的朋友可以参考一下
对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题
这篇文章主要介绍了python如何给内存和cpu使用量设置限制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
大家好,本篇文章主要讲的是Python中numpy数组的计算与转置详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008