2013-06-04 6 views
3

Я написал приложение selenium с помощью webdriver. Я хочу запустить его на удаленном сервере. Когда я это делаю, войдя на сервер через шпатлевку (вместе с Xming), селен пытается открыть браузер только на сервере и загружать страницы через внешний дисплей. Однако при этом требуется много времени, чем если бы я мог открыть браузер только на моем локальном хосте (а не на сервере). Возможно ли, что такая вещь произойдет или открытие на сервере только является единственным вариантом (который является болезненно медленным). Пожалуйста, скажите мне, если я тоже что-то упустил.Избегайте открытия браузера на удаленном сервере во время вызова selenium

Заранее спасибо.

ответ

2

Попробуйте использовать Selenium Grid вместо Putty для запуска вашего приложения Selenium на удаленном сервере. На веб-сайте Selenium имеется превосходное руководство по быстрому запуску для использования селеновой сетки: http://code.google.com/p/selenium/wiki/Grid2.

+0

Я реализовал код, но он все еще пытается открыть его из шпатлевки, поэтому требуется много времени, чтобы выполнить эту работу. Код выглядит следующим образом: – Aryabhatt

+0

Я нашел следующее предложение в [link] (http://www.redconfetti.com/2010/01/selenium-no-display-specified/). Даже если я это сделал, он показывает мне ошибку: не удается открыть дисплей:: 0 – Aryabhatt

0

@Lori

Я реализовал код, но он все еще пытается открыть его из замазки так занимает много времени, чтобы получить работу. Код выглядит следующим образом: «Код»

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) 

Для TUN этого скрипта на сервере, я использую замазку, чтобы запустить команду. Но затем он снова использует Xming для открытия браузера, который замедляет процесс. Итак, как запустить скрипт, не открывая браузер на моей локальной машине через Xming, чтобы это не стало узким местом. Благодаря

1

Вы можете запустить Selenium с «обезглавленной» водителя, HtmlUnitDriver, что на самом деле не открыть браузер:

http://code.google.com/p/selenium/wiki/HtmlUnitDriver

Примечание: HtmlUnitDriver будет принимать аргумент, так что он может эмулировать конкретный Водитель.