• 【第06节】Selenium4 JavaScript 处理场景实战(Python Web自动化测试)


    Selenium 4 【01-06节】主讲元素定位,处理一些特殊场景的方法与实战已经全部写完。文章所有素材来自互联网,如果文章有侵权处,请联系作者。

    1、Selenium4 自动化 JavaScript 场景实战

    JavaScript 在自动化测试常见的实战场景,如:处理富文本、 处理隐藏元素、处理 readonly 属性、处理浏览器滚动条。

    1.1 使用 JavaScript 处理富文本

    处理富文本有很多方式,这里使用的JavaScript 处理,可以用元素定位输入内容也可以,这里不做说明,如果不会就请把以前的代码再看看,举一反三自己写写代码研究一下。

    from selenium import webdriver
    from time import sleep
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://demo.zentao.net/story-create-6.html")
    driver.find_element(By.ID, 'submit').click()
    # 定位富文本框
    sleep(2)
    # 点击富文本输入框
    driver.find_element(By.CLASS_NAME,'ke-edit-iframe').click()
    # 输入内容
    driver.execute_script('document.getElementsByClassName("ke-edit-iframe")[0].contentWindow.document.body.innerHTML="%s"' % ("故事描述	内容!"))
    sleep(2)
    # driver.close()关闭驱动,driver.quit()退出驱动,开发中一般建议使用driver.quit()
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    注意:getElementsByClassName 使用定位必须加序号,因为它返回值是 list ,如果有 getElementsById 定位请用 ID 定位。

    1.2 使用 JavaScript 处理隐藏元素

    素材太难找了! style="display: block” 是显示,我们通过代码改成不显示,然后再取值设置可见吧。

    在这里插入图片描述

    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://mail.163.com/register/index.htm?from=163mail&utm_source=163mail")
    sleep(1)
    # 设置元素为隐藏
    driver.execute_script('document.getElementsByClassName("select")[0].style.display="none";')
    sleep(2)
    # 设置元素为可见
    driver.execute_script('document.getElementsByClassName("select")[0].style.display="block";')
    sleep(2)
    
    # driver.close()关闭驱动,driver.quit()退出驱动,开发中一般建议使用driver.quit()
    driver.quit()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    1.3 使用 JavaScript 处理 readonly 属性

    from selenium import webdriver
    from time import sleep
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://kyfw.12306.cn/otn/leftTicket/init")
    driver.find_element(By.ID, 'qd_closeDefaultWarningWindowDialog_id').click()
    # 移除 readonly 属性
    cf = 'document.getElementById("train_date").removeAttribute("readonly")'
    driver.execute_script(cf)
    sleep(2)
    driver.find_element(By.ID, 'train_date').clear()
    driver.find_element(By.ID, 'train_date').send_keys("8888-88-88")
    
    # driver.close()关闭驱动,driver.quit()退出驱动,开发中一般建议使用driver.quit()
    driver.quit()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    1.4 使用 JavaScript 处理浏览器滚动条

    from selenium import webdriver
    from time import sleep
    
    from selenium.webdriver import Keys
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://www.baidu.com/")
    driver.find_element(By.ID, "kw").send_keys("(Python Web自动化测试)")
    driver.find_element(By.ID, "su").click()
    sleep(2)
    # 使用滚动条移到页面底部
    driver.execute_script("window.scrollTo(0,10000);")
    sleep(3)
    # 使用滚动条移到页面顶部
    driver.execute_script("window.scrollTo(10000,0);")
    sleep(2)
    """
    这一段代码是,清除上面的数据,重新搜索数据。
    """
    driver.find_element(By.ID, "kw").clear()
    driver.find_element(By.ID, "kw").send_keys("零基础学Selenium 4")
    driver.find_element(By.ID, "su").click()
    sleep(2)
    # 使用 元素定位 + Keys.DOWN 将滚动条移动到底部
    driver.find_element(By.XPATH, '//*[@id="page"]/div/a[10]').send_keys(Keys.DOWN)
    sleep(3)
    # 使用 元素定位 + Keys.UP 将滚动条移动到顶部
    driver.find_element(By.XPATH, '//*[@id="s_tab"]/div/a[9]').send_keys(Keys.UP)
    sleep(2)
    # driver.close()关闭驱动,driver.quit()退出驱动,开发中一般建议使用driver.quit()
    driver.quit()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    计算机网络基本知识
    6-8 求链表的倒数第m个元素 分数 15
    【Android取证篇】华为设备跳出“允许USB调试“界面方法的不同方法
    通过stream流实现分页、模糊搜索、按列过滤功能
    C++(20):通过[[likely]]和[[unlikely]]优化编译switch
    MySQL【单行函数】
    【阿里云】图像识别
    什么是Lambda表达式?
    基于蝠鲼觅食优化的BP神经网络(分类应用) - 附代码
    笙默考试管理系统-MyExamTest----codemirror(34)
  • 原文地址:https://blog.csdn.net/KasthSoft/article/details/127966153