当前位置: 首页  >> 信息资讯  >> 帮助中心  >> 查看详情

瑞斯云:自动化测试之selenium调用JS语句

首先,我们来了解一下selenium调用JS语句的优缺点。优点:1.不受页面前端显示限制。(例如有一些页面元素需要鼠标悬停在某处,或者页面比较长,需要移动内嵌拖动条)2.可以直接修改页面的参数(把一些...

首先,我们来了解一下selenium调用JS语句的优缺点。

序列号 CPU RAM HDD 带宽 售价(美元) 免费试用
香港服务器1 E5-2620 32G 1T HDD 50M/无限流量 $196.00 立即申请
香港服务器2 E5-2650 32G 1T HDD 50M/无限流量 $256.00 立即申请
香港服务器3 E5-2680 32G 1T HDD 50M/无限流量 $316.00 立即申请
香港服务器4 E5-2690 32G 1T HDD 50M/无限流量 $336.00 立即申请
香港服务器5 E5-2697 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器6 E5-2620*2 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器7 E5-2650*2 32G 1T HDD 50M/无限流量 $436.00 立即申请
香港服务器8 E5-2680*2 32G 1T HDD 50M/无限流量 $476.00 立即申请
香港服务器9 E5-2690*2 32G 1T HDD 50M/无限流量 $556.00 立即申请
香港服务器10 E5-2697*2 32G 1T HDD 50M/无限流量 $596.00 立即申请
香港服务器11 E5-2680v4*2 32G 1T HDD 50M/无限流量 $696.00 立即申请
香港服务器12 E5-2698v4*2 32G 1T HDD 50M/无限流量 $796.00 立即申请

优点:

1.不受页面前端显示限制。(例如有一些页面元素需要鼠标悬停在某处,或者页面比较长,需要移动内嵌拖动条)

2.可以直接修改页面的参数(把一些属性改变),包括对CSS,HTML元素的增,删,改,定位。

缺点:

1.需要学习JS语句才能使用

什么是JS语句

JS语句其实就是web页面的脚本语言;

示例:网页在一个新的窗口中打开

有些链接按钮在点击后不是在当前窗口跳转,而是打开一个新窗口,这是因为在链接的标签上带target属性;当target=_blank时,点击链接打开新窗口。

selenium不能在当前窗口操作其他窗口,需要进行切换窗口。

调用js语句可以去除target属性,让链接在当前窗口打开

先使用js的定位方法进行定位(类似selenium的定位)getElementByClassName(),getElementById(),getElementsByName(),getElementsByTagName()进行定位后用removeAttribute(“target”)去除target属性

示例一

这是百度新闻里的一个链接,target是_blank代码:

from selenium import webdriver

driver=webdriver.Chrome()driver.implicitly_wait(3)driver.get(“http://news.baidu.com/tech“)js = ‘document.getElementByClassName(“bold-item”).childNodes[0].removeAttribute(“target”)’driver.execute_script(js)driver.find_element_by_link_text(‘移动游戏市场同比增长近50% 疫情“宅经济”’).click()

分析:

对页面的元素、属性等进行增删改等操作,是调用JS语句才能实现的独特优势;

除此之外,还有一些selenium比较麻烦操作,例如:对iframe的富文本编辑器进行编辑,移动内嵌拖动条(上下和左右)等,调用JS语句都可以比较容易地实现。

示例二

对iframe的富文本编辑器进行内容编辑

js=’document.getElementById(“**“).contentWindow.document.body.innerHTML=” %s “ ‘ % jstext

分析:

使用selenium自带的方法,我们需要切换到iframe,再对iframe的body进行send_key操作,若使用js语句可以不切换到iframe,直接对富文本编辑器的内容进行操作

示例三

移动内嵌拖动条

上下移动:scrollTop,0为顶,10000为底部js = ‘document.getElementsByClassName(“**“)[0].scrollTop=10000’

左右移动:scrollLeft,0为最左,10000为最右js = ‘document.getElementsByClassName(“**“)[0].scrollLeft=10000’

分析:

对于窗口的拖动条,selenium可以使用ActionChains(driver).move_to_element(**).perform()

这个方法很方便使用

不过对于内嵌拖动条,selenium使用drag_and_drop_by_offset()方法与调用js语句相比,调用js语句的更加方便快捷,也更灵活

总结

在selenium中调用JS语句,可以实现一些不可替代的功能(对页面元素、属性进行增删改),也可以更灵活快捷地进行一些操作,对selenium自动化帮助还是挺大的。

联系我们

文章链接: https://www.ruisiidc.com/help/9657.html

文章标题: 瑞斯云:自动化测试之selenium调用JS语句

给TA打赏
上一篇:

瑞斯云:云镜像对比起云快照有哪些区别

下一篇:

瑞斯云:云安全的挑战及解决方案是什么?

  • 24H在线
  • Tg纸飞机