zoukankan      html  css  js  c++  java
  • web自动化中的js操作

    1、滚动条处理 

    # 移动到元素ele对象的"底端"与当前窗口的"底部"对齐
    driver.execute_script('arguments[0].scrollIntoView();',ele)
    # 移动到元素ele对象的"顶端"与当前窗口的"顶部"对齐
    driver.execute_script('arguments[0].scrollIntoView(false);',ele)
    # # 移动到页面底部
    driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    # # 移动到页面顶部
    driver.execute_script('window.scrollTo(document.body.scrollHeight,0)')
    代码实现滚动条操作:
     1 from selenium import webdriver
     2 from selenium.webdriver.common.keys import Keys
     3 from selenium.webdriver.support.wait import WebDriverWait
     4 from selenium.webdriver.support import expected_conditions as EC
     5 from selenium.webdriver.common.by import By
     6 driver=webdriver.Chrome()
     7 driver.maximize_window()
     8 driver.get('https://wwww.baidu.com')
     9 driver.find_element_by_id('kw').send_keys("柠檬班",Keys.ENTER)
    10 WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//a[text()=' - 主页']")))
    11 # 1、找到需要定位的元素
    12 ele=driver.find_element_by_xpath("//a[text()=' - 主页']")
    13 # 2、移动到元素ele对象的"底端"与当前窗口的"底部"对齐
    14 driver.execute_script('arguments[0].scrollIntoView();',ele)

    2、js操作元素属性

      web自动化测试中,当遇到不能直接输入的输入框时(比如,元素属性中有readonly属性),需要使用js改变元素的属性,使得输入框可以输入信息

      代码操作如下:

     1 import time
     2 from selenium import webdriver
     3 from selenium.webdriver.common.action_chains import ActionChains
     4 from selenium.webdriver.support.wait import WebDriverWait
     5 from selenium.webdriver.support import expected_conditions as EC
     6 from selenium.webdriver.common.by import By
     7 driver=webdriver.Chrome()
     8 driver.maximize_window()
     9 driver.get('https://www.12306.cn/index/')
    10 
    11 # 获取出发地元素
    12 start_site=driver.find_element_by_id("fromStation")
    13 start_site_text=driver.find_element_by_id("fromStationText")
    14 
    15 # 设置出发地信息(使用web查找元素的方式,在进行js操作),如果使用xpath定位元素的情况只能用这种方法,不能直接使用js语句
    16 driver.execute_script("var start=arguments[0];var start_text=arguments[1];start.value='ZZF';start_text.value='郑州';",start_site,start_site_text)
    17 
    18 # 设置目的地信息(使用js操作)
    19 js='var to_site=document.getElementById("toStation");to_site.value="HZH";to_site_text=document.getElementById("toStationText");to_site_text.value="杭州";'
    20 # 执行js语句
    21 driver.execute_script(js)
    22 
    23 # 设置出发日期
    24 js='var start_time=document.getElementById("train_date");start_time.readOnly=false;start_time.value="2020-04-16";'
    25 driver.execute_script(js)
    26 
    27 # 获取查询按钮元素并点击
    28 driver.find_element_by_id("search_one").click()
    29 time.sleep(0.5)
    30 # 获取句柄
    31 handles=driver.window_handles
    32 driver.switch_to.window(handles[-1])
    33 time.sleep(0.5)
    34 # 定位查找到的元素
    35 WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//a[@class="menu-nav-hd"]')))
    36 ele=driver.find_element_by_xpath('//a[@class="menu-nav-hd"]')
    37 # 实例化ActionChains
    38 ac=ActionChains(driver)
    39 ac.move_to_element(ele)
    40 ac.perform()
    41 time.sleep(2)
    42 driver.quit()
    
    
  • 相关阅读:
    aaa
    https://download.csdn.net/download/qq_33200967/10679367
    hadoop修改
    xa
    commit
    mybatis
    centos7 部署openstf
    selenium api docs
    Chrome浏览器在自动化中的应用
    selenium自动化测试各浏览器驱动下载地址
  • 原文地址:https://www.cnblogs.com/wsk1988/p/12705374.html
Copyright © 2011-2022 走看看