热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

selenium点击后没反应未报错_Selenium自动化测试JavaScript定位

——————今天距2020年37天——————这是ITester软件测试小栈第83次推文做自动化过程中,会发现有的按钮点击不了,或者点击没有反应

——————·今天距2020年37天·——————

这是ITester软件测试小栈第83次推文

做自动化过程中,会发现有的按钮点击不了,或者点击没有反应,也没有报错,或者不能处理滚动条等场景,我们可以通过Javascript定位来解决这些问题。

以下总结了5种Javascript定位的方法,除了id是定位到单个element元素对象,其它的都是elements返回的是list对象。

1.通过id获取

document.getElementById(“id”)

2.通过name获取

document.getElementsByName(“Name”)

3.通过标签名选取元素

document.getElementsByTagName(“tag”)

4.通过CLASS类选取元素

document.getElementsByClassName(“class”)

5.通过CSS选择器选取元素

document.querySelectorAll(“css selector")

通过Javascript获取到元素之后,对元素的属性、内容进行操作。

  • 对属性的操作

  1. 设置属性:对象.setAttribute('属性名', '值');

  2. 获取属性:对象.getAttribute('属性名');

  3. 移除属性:对象.removeAttribute('属性名');

  • 对内容的操作

  1. 设置表单的value属性的值或元素的内容:对象.value="值";

  2. 设置指定元素标签内的文本值: 对象.innerText="值";

介绍完这些理论后,我们以实际例子来演示,比如现在用Javascript在百度搜索框输入内容。

from selenium import webdriverdriver = webdriver.Chrome()driver.get('https://www.baidu.com/')# js通过id属性获取对象,然后设置对象的值search_js = 'document.getElementById("kw").value="selenium";'driver.execute_script(search_js)

接下来,我们看下Javascript定位可以应用到哪些场景?

一通过Javascript滑动滚动条

from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get('https://www.baidu.com/')driver.set_window_size(600,600)time.sleep(3)# 滚动条滑到底部scroll_bottom_js = 'document.documentElement.scrollTop=8888;'driver.execute_script(scroll_bottom_js)time.sleep(2)# 滚动条滑到顶部scroll_top_js = 'document.documentElement.scrollTop=0;'driver.execute_script(scroll_top_js)二操作日历控件   

以12306页面,出发日期的日历控件为例。我们先定位到控件,看下源码:

c222c87563052cff65dca507f15f1dfa.png

发现出发日期,有个readonly属性,这个时候我们输入不了日期,可以通过两种方法:

 1.去掉readonly属性,然后send_keys输入日期  

from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get('https://www.12306.cn/index/')# 通过id属性获取元素,然后移除移除元素的readonly属性datetime_js = 'document.getElementById("train_date").removeAttribute("readonly");'driver.execute_script(datetime_js)time.sleep(2)driver.find_element_by_css_selector('input#train_date').clear()driver.find_element_by_css_selector('input#train_date').send_keys('2019-01-02')

 2.直接通过Javascript输入日期  

from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get('https://www.12306.cn/index/')time.sleep(2)# 通过id属性获取元素信息,然后value改变值datetime_js = 'document.getElementById("train_date").value="2020-11-10";'driver.execute_script(datetime_js)三操作多窗口

做自动化过程中,会遇到多开页面的情况,切换多窗口会比较麻烦,这时候我可以用Javascript来处理。

我们先看下什么时候会新开页面,以百度页面的新闻链接为例,点击新闻链接会跳转到新开页面。1cbddf02cb4a7e9178ea6cd59ce0181b.png             

查看前端代码发现,target="_blank",其中_blank表示新开页面,知道了原理,那我们可以利用js去掉_blank这个属性值或者直接删除target属性。

 1.js去掉_blank属性值  

from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get('https://www.baidu.com/')# js修改target值为空news_js = 'document.getElementsByClassName("mnav")[0].target="";'driver.execute_script(news_js)time.sleep(2)driver.find_element_by_link_text("新闻").click()

 2.js删除target属性  

from selenium import webdriverdriver = webdriver.Chrome()driver.get('https://www.baidu.com/')# js去掉target属性news_js = 'document.getElementsByClassName("mnav")[0].removeAttribute("target");'driver.execute_script(news_js)driver.find_element_by_link_text("新闻").click()以上That's  allITester软件测试小栈往期内容宠幸叮—这有一打让你666的测试终极资料包,请查收!

打开PyCharm永久激活的这两个锦囊,再也不用担心写代码的时候让我付费了!

Selenium自动化测试-1.selenium介绍及环境安装

Selenium自动化测试-2.浏览器基本操作

Selenium自动化测试-3.元素定位(1)

Selenium自动化测试-3.元素定位(2)

Selenium自动化测试-3.元素定位(3)

Selenium自动化测试-4.By定位及如何确定元素唯一

Selenium自动化测试-5.脚本录制神器Katalon Recorder

Selenium自动化测试-6.鼠标键盘操作

Selenium自动化测试-7.获取元素属性信息

Selenium自动化测试-8.iframe处理

Selenium自动化测试-9.设置元素等待

8970c3f59d0df3e6e9dccc2a9cc96674.png快来星标 置顶 关注

后台回复资源取干货

2ec232dbeec40e8bc08e6f1acd2ffd99.gif

7f6b7866d0ad2e0dae3e66d4deadf296.png

2ec232dbeec40e8bc08e6f1acd2ffd99.gif

9b68d31dc66fb5b92a175eb20625e2fd.gif

想要获取相关资料和软件 ?

Q群:727998947




推荐阅读
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
author-avatar
手机用户2602889817_805
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有