selenium.webdriver 高亮显示当前操作的元素

高亮显示当前webdriver正在操作的元素,可以使用js代码来完成,两种写法:

driver.execute_script(‘arguments[0].style.border="2px solid red";‘, ele)

driver.execute_script(‘arguments[0].setAttribute("style", "border: 2px solid red");‘, ele)

ele是通过driver定位到的元素,传入这个元素,arguments[0]就接受第一个传参,即该元素

至于高亮的样式都可以自己用css指定

但是这样只能高亮显示,在同一页面操作多个元素时会导致一片都高亮显示,所以自己研究了下,将高亮显示和还原方法放到了类中,代码如下:

from selenium import webdriver
from time import sleep

class HighLight:
    # 初始化需要传入操作的driver
    def __init__(self, dr):
        self.driver = dr
        self.border = None
        self.ele = None

    def highlight(self, ele):
        self.ele = ele
        # 记录元素修改前的border样式
        self.border = self.ele.value_of_css_property('border')
        # 修改border样式,高亮显示
        self.driver.execute_script('arguments[0].style.border="2px solid red";', self.ele)

    def reset(self):
        if self.border is None or self.ele is None:
            return
        # 将border样式还原
        self.driver.execute_script(f'arguments[0].style.border="{self.border}";', self.ele)
        self.ele = None
        self.border = None

with webdriver.Chrome() as driver:
    hl = HighLight(driver)
    driver.get('https://www.sogou.com/')
    driver.maximize_window()
    driver.implicitly_wait(5)

    query = driver.find_element_by_id('query')
    hl.highlight(query)
    query.send_keys('123')
    hl.reset()
    sleep(1)

    submit = driver.find_element_by_id('stb')
    hl.highlight(submit)
    submit.click()
    hl.reset()
    sleep(3)

原文地址:https://www.cnblogs.com/milesma/p/12333841.html

时间: 2024-10-18 21:10:45

selenium.webdriver 高亮显示当前操作的元素的相关文章

WebDriver API——延时操作及元素等待

在自动化测试过程当中,受网络.测试设备等诸多因素的影响,我们经常需要在自动化测试脚本中添加一些延时来更好的定位元素来进行一系列的操作. 一般有这么几种方式: 1.implicitlyWait.识别对象时的超时时间.过了这个时间如果对象还没找到的话就会抛出NoSuchElement异常 2.setScriptTimeout.异步脚本的超时时间.webdriver 可以异步执行脚本,这个是设置异步执行脚本脚本返回结果的超时时间. 3.pageLoadTimeout.页面加载时的超时时间.因为webd

selenium - webdriver keys 键盘操作

webdriver的Keys()类,提供了几乎所有按键的方法,常用的如下: Keys.BACK_SPACE     删除键 Keys.SPACE               空格键 Keys.TAB                   制表键(Tab) Keys.ESCAPE             回退键(Esc) Keys.ENTER               回车键(Enter) Keys.CONTROL          Ctrl键 ps:元素的send_keys()方法,可以模拟键盘

selenium webdriver 截屏操作

有时候我们需要进行截屏操作,特别是遇到一些比较重要的页面信息(出现错误)或者出现不同需要进行对比时, 我们就需要对正在处理的页面进行截屏! 未经作者允许,禁止转载! package test_wait20161205; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.openqa.selenium.OutputType; import org.o

Java中通过Selenium WebDriver定位iframe中的元素

问题:有一些元素,无论是通过id或是xpath等等,怎么都定位不到. 分析:这很可能是因为你要定位的元素被嵌套在了当前页面的一个iframe元素中,Selenium对iframe中的元素有特殊的定位规则,WebDriver不能够直接进行定位. 解决办法:我们要把这个iframe元素找出来,让WebDriver转移到这个iframe元素上,之后再让WebDriver对iframe中的元素进行定位. 因为最近在用Java来做一些东西,所以就顺便说一下Selenium在Java环境下的使用,总共分三步

java selenium webdriver处理JS操作窗口滚动条

未经作者允许,禁止转载!!! import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class JS20161212 { public static void main(String[] args) throws InterruptedException { // TODO

python + selenium webdriver 复合型css样式的元素定位方法

<div class="header layout clearfix"></div> 当元素没有id,没有name,没有任何,只有一个class的时候,应该如何去定位这个元素 1.页面存在多个div,使用find_elements_by_tag_name("div")[x] 这种方法可以使用,但是要去数第几个div,太坑 2.使用find_element_by_class_name("header layout clearfix&q

selenium webdriver学习(十)------------如何把一个元素拖放到另一个元素里面(转)

selenium webdriver学习(十)------------如何把一个元素拖放到另一个元素里面 博客分类: Selenium-webdriver 元素拖放drag and drop Q群里有时候会有人问,selenium  webdriver怎么实现把一个元素拖放到另一个元素里面.这一节总一下元素的拖放. 下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的div框中. http://koyoz.com/demo/html/drag-drop/drag-drop.

selenium webdriver 学习笔记(二)

selenium webdriver 一.定位一组元素: webdriver可以很方便的使用findElement 方法来定位某个物定的对象.不过有时候我们却要定位一组对象,这时候就需要使用findElements方法. 应用场景: 1. 批量操作对象,比如将页面上所有checkbox都选择上: 2.先获取一组对象,再在这组对象中过滤出需要定位的一些对象.比如定位页面上所有checkbox,然后再选择最后一个. 二.多层框架.窗口定位 switch_to_frame() switch_to_wi

Selenium Webdriver——操作隐藏的元素

有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了.例如,下面的情况: 页面主要通过“display:none”来控制整个下拉框不可见.这个时候如果直接操作这个下拉框,就会提示: from selenium import webdriver from selenium.webdriver.support.select import Select import os,time driver = webdriver.Chrome() file_path = 'file