2013-06-04 58 views
3

我已經使用webdriver編寫了一個selenium應用程序。我希望在遠程服務器上運行它。當我通過putty(和Xming)登錄到服務器時,硒會嘗試打開服務器上的瀏覽器,並通過外部顯示器加載頁面。但是在這樣做的時候,如果我只能在本地主機(而不是服務器)上打開瀏覽器,則需要很多時間。是否有可能發生這種事情,或者僅在服務器上打開是唯一的選擇(這是痛苦的緩慢)。請告訴我,我是否也錯過了一些東西。避免在硒調用期間在遠程服務器上打開瀏覽器

在此先感謝。

回答

2

嘗試使用Selenium Grid而不是Putty在遠程服務器上運行Selenium應用程序。 Selenium網站有一個很好的使用Selenium Grid的快速入門指南:http://code.google.com/p/selenium/wiki/Grid2

+0

我實現了代碼,但仍嘗試從putty中打開它,因此需要花費大量的時間才能完成工作。代碼如下: – Aryabhatt

+0

我在[link](http://www.redconfetti.com/2010/01/selenium-no-display-specified/)處發現了以下建議。即使我這樣做,它顯示我一個錯誤:無法打開顯示器:: 0 – Aryabhatt

0

@Lori

我實現了代碼,但它仍試圖打開它膩子因此需要花費大量的時間來完成工作。代碼如下:'code'

import sys 
from scrapy.spider import BaseSpider 
from scrapy.http import FormRequest 
from scrapy.selector import HtmlXPathSelector 
from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.selector import HtmlXPathSelector 
from scrapy.item import Item 
from scrapy.http import Request 

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

class DmozSpider(BaseSpider): 
name = "linkedin_crawler" 
#defence news 
global company 
global query 
companyFilename = '<filename>' 
f=open(companyFilename,"r") 
f.seek(0) 
company = f.readline().strip() 
f.close() 
queryFilename = '/var/www/Symantec/recon/recon/' +company+ '/Spider/LinkedIn/query.txt' 
f = open(queryFilename) 
f.seek(0)  
query=f.readline().strip() 
f.close() 

start_urls = ['https://www.linkedin.com/uas/login']; 


def __init__(self): 
    BaseSpider.__init__(self) 
capabilities = webdriver.DesiredCapabilities() 
self.selenium = webdriver.Remote(command_executor = 'http://localhost:5000/wd/hub', desired_capabilities = capabilities.FIREFOX) 

def __del__(self): 
    self.selenium.quit() 


def parse(self, response): 
sel= self.selenium 
    sel.get(response.url) 
global query 

elem1 = sel.find_element_by_name("session_key") 
elem2 = sel.find_element_by_name("session_password") 
elem1.send_keys("myemailid") 
elem2.send_keys("mypassword") 
elem2.send_keys(Keys.RETURN) 

    return Request(query, callback=self.page_parse) 


def page_parse(self,response): 
global query 
global company 


sel= self.selenium 
    sel.get(query) 

for i in xrange(10): 
#for i in xrange(5): 

    nameFilename = '' 

    #print hxs 
    nlist = sel.find_elements_by_xpath('//ol[@class="search-results"]/li/div/h3/a') 


    fh = open(nameFilename,"a") 

    for j in xrange(len(nlist)): 

     url = nlist[j].get_attribute("href").encode('utf-8') 
     name = nlist[j].text.encode('utf-8') 

     fh.write(name) 
     fh.write("<next>") 
     fh.write(url) 
      fh.write('\n') 


    fh.close() 

    next = sel.find_elements_by_xpath('//a[@class="page-link"]') 
    next[0].click() 
    time.sleep(5) 

要在服務器上運行這個腳本,我使用putty來激發命令。但是之後它再次使用Xming來打開瀏覽器,這使得進程再次變慢。所以,如何在不通過Xming在本地機器上打開瀏覽器的情況下運行腳本,這樣就不會成爲瓶頸。由於