【问题标题】:Modify HTML with Selenium使用 Selenium 修改 HTML
【发布时间】:2020-01-16 07:56:42
【问题描述】:

我想使用 Selenium(与 Python 3 一起运行)修改浏览器中的特定 HTML 元素,使其周围有“标记”标签(从而突出显示我感兴趣的文本)。有没有办法做到这一点?

【问题讨论】:

    标签: python-3.x selenium execute-script


    【解决方案1】:

    您可能想要突出显示输入框,并且您可能希望它只突出显示一小段时间......

    这是我用来突出显示元素的函数:

    def highlight_element(element):
        driver_elem = element.parent
    
        def apply_style(s):
            driver_elem.execute_script("arguments[0].setAttribute('style', arguments[1]);",
                                       element, s)
    
        original_style = element.get_attribute('style')
        apply_style("background: yellow; border: 2px solid red;")
        sleep(0.5)
        apply_style(original_style)
    

    您必须向函数传递一个元素,例如:

    highlight_element(driver.find_element_by_id("username"))
    

    【讨论】:

      【解决方案2】:

      如果页面使用 jQuery,这很容易实现:

      driver.execute_script('$("#some_id").wrap("<mark></mark>")')
      

      如果页面没有使用 jquery,您可以使用以下脚本手动添加:

      from selenium import webdriver
      import time
      
      driver = webdriver.Firefox()
      driver.get(url)
      
      driver.execute_script("""var jquery_script = document.createElement('script');
      jquery_script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
      document.getElementsByTagName('head')[0].appendChild(jquery_script);""")
      
      time.sleep(0.5) # you need to let jquery load first
      driver.execute_script('$ = window.jQuery;')
      
      driver.execute_script('$("#some_id").wrap("<mark></mark>")')
      

      感谢 Furas 在这方面帮助我: how to add jQuery to a page using selenium.

      【讨论】:

        猜你喜欢
        • 2016-06-25
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 2021-12-29
        • 2018-11-07
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        相关资源
        最近更新 更多