Selenium,python,定期点击javascript链接?

2024-04-27 02:41:11 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python和selenium绑定定期单击javascript生成的链接的正确方法是什么?应该用线吗?在

因为我需要继续处理输入数据,所以我需要刷新/重置一个计时器来继续接收数据,单击这个给定的链接进行刷新(这个链接是由javascript直接生成的html)。在

谨致问候


Tags: 数据方法链接htmlseleniumjavascript计时器重置
1条回答
网友
1楼 · 发布于 2024-04-27 02:41:11

你不需要线程来做这件事。在

使用javascript函数^{}连续单击链接。在

例如:

import time

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://jsfiddle.net/falsetru/4UxgK/show/')

# Click the link every 3000 ms.
driver.execute_script('''
    // argument passed from Python can be accessed by `arguments` array.
    var link = arguments[0];
    var timer = setInterval(function() {
        link.click();
    }, 3000);
''', driver.find_element_by_id('activity'))

while True:
    data = driver.find_element_by_id('counter').text
    print(data)
    time.sleep(1)

注意

如果出现如下错误,请将^{}升级到最新版本。我在使用firefox23.0+selenium 2.32.0时遇到了以下错误。硒2.35.0错误消失。在

^{pr2}$

备选方案:使用螺纹

import threading
import time

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://jsfiddle.net/falsetru/4UxgK/show/')

def click_loop(link, interval):
    while True:
        link.click()
        time.sleep(interval)

link = driver.find_element_by_id('activity')
threading.Thread(target=click_loop, args=(link, 3)).start()

while True:
    data = driver.find_element_by_id('counter').text
    print(data)
    time.sleep(1)

相关问题 更多 >