2017-08-01 115 views
-1

我已经交出了一个使用python进行脚本编写的现有selenium框架。对于调试(&其他)的目的,我想强调当前正在采取行动的元素(输入框,链接,下拉等)如何使用Selenium-Python突出显示网页上的元素?

尽管我可以找到解决方案来定义一个函数并调用函数无论我需要突出元素(如下面的例子),我需要的是在框架级别的解决方案。

  1. Selenium webdriver highlight element before clicking
  2. https://seleniumwithjavapython.wordpress.com/selenium-with-python/intermediate-topics/playing-with-javascript-and-javascript-executor/highlighting-a-web-element-on-webpage/

是否有可能实现在Python的框架/脚本级别的任何解决方案(或可与Python脚本集成任何其他语言),所以我不不必明确地调用这些函数。

P.S.我刚开始使用Python,所以如果它简单/直截了当,请原谅。如果有人能指点我现有的任何解决方案或可以提供他们自己的解决方案,将会感激。

+0

我不明白需要突出显示调试元素。日志应该足以了解什么时候出错。此外,由santosh提供的解决方案会减慢执行速度。 (.3x元素数) –

+0

我明白了,但正如我所说我是Python新手(到目前为止做的编程很少),所以突出显示元素使我更容易调试失败点。我同意,我会在几个月后使用日志进行调试,但现在我只能感谢解决我的问题的任何解决方案。 – Nik

+0

对此没有简单的解决方案。要么为每个要为其突出显示元素的每个动作编写包装,要么在执行任何操作之前手动在您的测试中调用此方法。无论哪种方式都很昂贵,但如果您不得不禁用该功能,则代价很高。 –

回答

1

我还没有试过这段代码,但是这应该可以工作。

import time 

def highlight(element): 
"""Highlights (blinks) a Selenium Webdriver element""" 
    driver = element._parent 
    def apply_style(s): 
    driver.execute_script("arguments[0].setAttribute('style', arguments[1]);",element, s) 
    original_style = element.get_attribute('style') 
    apply_style("background: yellow; border: 2px solid red;") 
    time.sleep(.3) 
    apply_style(original_style) 

希望这会有所帮助。谢谢。

来源 - https://gist.github.com/dariodiaz/3104601

+0

据我所知,这个函数仍然需要为每个元素调用,并且不会在类/框架级别实现。纠正我,如果我错了。 – Nik

+0

将其作为单独的py文件编写并导入此实际的类文件。在需要时使用它。默认情况下是否需要突出显示每个元素的元素? –

+0

是的..这就是我想要做的。突出显示执行自动化脚本时所采取的每个Web元素。 – Nik

相关问题