我只是从这里运行selenium的示例代码:
http://selenium.googlecode.com/svn/trunk/docs/api/py/index.html
代码是:
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yahoo.com") # Load page
try:
browser.find_element_by_xpath("//a[contains(@href,'http://seleniumhq.org')]")
except NoSuchElementException:
assert 0, "can't find seleniumhq"
browser.close()
但它对我不起作用,这是它的回应:
Traceback (most recent call last):
File "test.py", line 4, in <module>
driver = webdriver.Firefox()
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 62, in __init__
desired_capabilities=capabilities)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 72, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 114, in start_session
'desiredCapabilities': desired_capabilities,
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 136, in check_response
raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message:
...
<div id="content">
<p>The following error was encountered while trying to retrieve the URL: <a href="http://127.0.0.1:60106/hub/session">http://127.0.0.1:60106/hub/session</a></p>
<blockquote id="error">
<p><b>Connection to 127.0.0.1 failed.</b></p>
</blockquote>
<p id="sysmsg">The system returned: <i>(111) Connection refused</i></p>
<p>The remote host or network may be down. Please try the request again.</p>
...
答案 0 :(得分:0)
你没有运行完整的例子。您发布的链接包含以下代码:
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yahoo.com") # Load page
assert "Yahoo!" in browser.title
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys("seleniumhq" + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API
try:
browser.find_element_by_xpath("//a[contains(@href,'http://seleniumhq.org')]")
except NoSuchElementException:
assert 0, "can't find seleniumhq"
browser.close()
这很好用。 您问题中编辑的代码版本缺少某些部分,因此失败。具体来说,您缺少这两行:
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys("seleniumhq" + Keys.RETURN)
启动雅虎搜索“seleniumhq”。搜索结果是您要在其中找到元素的内容。
如果您不进行搜索,则会失败:
browser.find_element_by_xpath("//a[contains(@href,'http://seleniumhq.org')]")
答案 1 :(得分:0)
当Selenium用
启动Firefox时browser = webdriver.Firefox()
它访问的第一个地址是localhost - 127.0.0.1:xxxxx
如果您使用的是代理服务器,则无法使用代理集访问localhost。 因此,首先您需要使用以下命令关闭代理:
unset http_proxy
unset ftp_proxy
unset socks_proxy
unset https_proxy
关闭代理后,Firefox应该启动时没有任何错误。但现在您需要在Firefox上设置代理。描述的技术here有效。