2

我刚开始探索 selenium,它很棒,但是我想写一个脚本,使用 ELinks 浏览网页。

使用 Se webdriver,我可以执行以下操作:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

#Open firefox
br=webdriver.Firefox()
#open website
br.get('http://python.org')
#check if website title contains word
assert 'Python' in br.title
elem=br.find_element_by_name('q')
elem.send_keys('selenium')
elem.send_keys(Keys.RETURN)
assert 'Google' in br.title
br.close()

但是如何用 Elinks 在 python 中做类似的任务呢?(或者有可能吗?)

4

2 回答 2

4

elinks 真的很快。您可以使用 Lua 脚本语言自动化 elink 。他们的文档中有示例脚本。您还可以尝试使用 pexpect,这是一种在 python 中自动化终端应用程序的非常好的方法。以下脚本使用 pexpect 执行与问题中的示例相同的任务。它将访问 python.org,搜索 selenium,将搜索结果保存到文件中,然后退出 elinks。

from pexpect import spawn
import time
import datetime

KEY_UP = '\x1b[A'
KEY_DOWN = '\x1b[B'
KEY_RIGHT = '\x1b[C'
KEY_LEFT = '\x1b[D'
KEY_ESCAPE = '\x1b'
KEY_BACKSPACE = '\x7f'

child = spawn('elinks http://python.org')
print 'waiting for python.org to load'
child.expect('Python')
time.sleep(0.1)
print 'doing selenium search'
child.sendline('/advanced search')
child.sendline(KEY_UP * 2)
child.sendline('selenium')
child.sendline('')
print 'waiting for search results'
child.expect('Google Search')
time.sleep(0.1)
print 'saving html'
child.send(KEY_ESCAPE)  # bring up menu
child.send(KEY_DOWN + 's')  # select save as in menu
child.send(KEY_BACKSPACE * 100) # remove any file name already in input box
file = './saved_' + datetime.datetime.now().strftime('%H%M%S') + '.html'
child.sendline(file)
#child.interact() #uncomment to interact with elinks, good for debugging
print 'quiting'
child.sendline('q')
child.wait()
于 2012-10-19T07:49:56.530 回答
0

Selenium 有一个无头浏览器选项htmlunit。htmlunit 仍然没有完整的 javascript 实现,但它有很多——你可以使用它直到它崩溃。

或者,无论如何,Chrome 都非常快。我将 chrome 用于我的 webdriver 自动化,并且 Chrome 速度足够快,如果我没有正确编码计时,我最终会遇到端口耗尽。

于 2012-10-18T17:15:55.540 回答