Selenium,python,定期点击javascript链接
Selenium, python, clicking on a javascript link regularly?
使用python和selenium绑定,在固定时间间隔内点击javascript生成的链接的正确方式应该是什么?应该使用线程吗?
由于我需要继续处理输入数据,我需要刷新/重置一个计时器来继续接收数据,点击这个给定的链接来进行刷新(这个链接是javascript直接生成的html)。
向致以最良好的问候
您不需要线程来执行此操作。
使用javascript函数setInterval
连续单击链接。
例如:
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)
注意
如果出现以下错误,请将selenium
升级到最新版本。我在Firefox 23.0+selenium 2.32.0中遇到以下错误。selenium 2.3.5.0的错误消失了。
Traceback (most recent call last):
File "t2.py", line 12, in <module>
print driver.execute_script('''return 1 + 2;''')
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 397, in execute_script
{'script': script, 'args':converted_args})['value']
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 165, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 158, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: u'waiting for evaluate.js load failed' ; Stacktrace:
at r (file:///tmp/tmpm1sJhH/extensions/fxdriver@googlecode.com/components/driver_component.js:8360)
at fxdriver.Timer.prototype.runWhenTrue/g (file:///tmp/tmpm1sJhH/extensions/fxdriver@googlecode.com/components/driver_component.js:392)
at fxdriver.Timer.prototype.setTimeout/<.notify (file:///tmp/tmpm1sJhH/extensions/fxdriver@googlecode.com/components/driver_component.js:386)
备选方案:使用螺纹
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)
相关文章:
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- 使用Java从javascript链接获取html更改
- 动态虚拟目录和外部 JavaScript 链接
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- Datatable Javascript链接在第2页不起作用
- 如何将href与javascript链接
- Javascript链接和变量替换
- Javascript链接使目标为空
- 外部JavaScript链接不起作用
- 鼠标光标改变Javascript链接的DIV
- Action使用Javascript链接并将值传递给控制器
- Javascript链接-试图设置元素值-奇怪的行为chrome&安卓
- 如何在没有onClick的情况下使用Javascript链接
- Javascript根据屏幕大小编写新的Javascript链接
- 更新用户's使用PHP或JavaScript链接
- JavaScript链接提取器
- javascript链接使页面在单击时向上
- 使用javascript链接样式
- 触摸设备的JavaScript链接预览
- Jquery javascript 链接含义