Selenium中的过载按钮功能

时间:2019-01-31 20:20:03

标签: python selenium selenium-webdriver

我有一个用例,其中在某些网页中浏览网站时有一个按钮。我想重载该函数以实际运行我的本地python脚本,而不是使用href链接(指向服务器上的某个页面)

我有三种解决方法-

  1. 反复查询来检查按钮被点击或没有。每当它获得的点击我将调用所需的功能。当然,这不是一个好主意,因为它会降低浏览器的速度。

  2. 覆盖源代码中的按钮功能。

  3. 为所有页面创建一个新按钮,仅当页面中还存在实际按钮时才会调用该功能(否则,我们将显示“无法对此页面执行此操作”)

我认为2和3可以做得更好,但我在Google上无法获得太多资源。如何才能做到这一点的任何链接/答案将是很大的帮助。

2 个答案:

答案 0 :(得分:0)

最简单的方法可能是在本地计算机上运行Python Web服务器,该服务器在收到特定的HTTP请求时运行Selenium代码。您可以使用Flask这样编写服务器,例如:

from flask import Flask, abort

app = Flask(__name__)

@app.route('/dosomestuff', methods=['POST'])
def display():
    # Check that the request is coming from t
    if request.remote_addr != '127.0.0.1':
        abort(403)

    do_some_stuff()  # Call whatever code you want to run here

    return "Done"

if __name__ == '__main__':
    app.run()

(在这里使用Flask可能会过大了,您可能不需要库也可以这样做,但是Flask是我最熟悉的方法。)

然后,在您的网页上,您只需设置一个按钮即可发送适当的请求:

<form action="http://localhost:8080/dosomestuff" method="post">
  <input type="submit" value="Do some stuff">
</form>

然后,只要您的本地服务器当时正在运行,单击该按钮即可触发您的Python代码。

答案 1 :(得分:0)

步骤2可以通过使用chrome / firefox扩展程序来完成。用Selenium不可能做到这一点,因为它需要编辑DOM。 这个link可能会有所帮助。