Selenium系列(6)- js处理方式

使用js的好处

  • 解决大部分click()不生效的问题
  • 页面滚动到底部,顶部
  • 处理富文本、时间控件的输入

调用js方式 execute_script()

# 执行js
driver.execute_script("js语句")

滑动至页面底部

举个栗子:滑动百度搜索页至页面底部

driver.execute_script("document.documentElement.scrollTop=100000")

元素点击

# js中加入return 可返回元素
element = driver.execute_script("return document.getElementById('su')")
element.click()

🎉ATTENTION:

  • js语句中加入return,可返回对应元素
  • js语句中可添加多个js语句,用分号隔开,多个js语句会依次执行

处理时间控件

前置条件:

  • 大部分时间控件都是readonly属性,需要手动去选择相应时间,自动化测试中对事件控件的操作可以使用js来操作

处理思路:

  • 取消日期的readonly属性
  • 赋值给value
  • 用js实现以上两点,再用webview对js进行处理

12306网站为例,修改控件时间(出发日期)

def test_datetime(self):
    #以12306为例
    self.driver.get("https://www.12306.cn/index/")
    # 定位时间控件并去除readonly属性
    time_ele = self.driver.execute_script("a = document.getElementById('train_date');a.removeAttribute('readonly')")
    # 时间赋值
    self.driver.execute_script("document.getElementById('train_date').value='2021-11-11'")
    value = self.driver.execute_script("return document.getElementById('train_date').value")
    print(value)

控制台输出结果为:

2021-11-11
# 修改成功

总结:js能实现的功能,都可以通过selenium实现!!!

posted @ 2021-10-18 22:50  莫伊101  阅读(58)  评论(0)    收藏  举报