2012-02-13 9 views
8

मैं उबंटू 11.04 और सेलेनियम 2.9.0 यहाँ का उपयोग कर रहा है कि कैसे यह मेरी जड़ पोम में कॉन्फ़िगर किया गया है:परीक्षण के लिए कस्टम फ़ायरफ़ॉक्स सेटअप का उपयोग करने के लिए मैं सेलेनियम वेबड्राइवर को कैसे कॉन्फ़िगर कर सकता हूं?

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output: 
*** LOG addons.xpi: startup 
*** LOG addons.xpi: Ignoring file entry whose name is not a valid add-on ID: > /tmp/anonymous3804893394247066972webdriver-profile/extensions/webdriver-staging 
*** LOG addons.xpi: checkForChanges 
*** LOG addons.xpi: No changes found 

    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:95) 
    .... 

के रूप में:

<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.9.0</version> 
    <scope>test</scope> 
</dependency> 

जब एक परीक्षण चलाने के लिए attemting, मैं एक अपवाद मिल जहां तक ​​मैंने इसे गुमराह किया है, मुद्दा यह है कि फ़ायरफ़ॉक्स ड्राइवर जो सेलेनियम का उपयोग करता है वह ब्राउज़र के संस्करण के साथ असंगत है। लगातार अद्यतन फ़ायरफ़ॉक्स रिलीज़ को ध्यान में रखते हुए, मेरे स्थानीय परीक्षण वातावरण को बनाए रखना मुश्किल होगा।

इसलिए, मैंने अपने डिफ़ॉल्ट फ़ायरफ़ॉक्स को संरक्षित करते समय नवीनतम संगत संस्करण के साथ एक स्थिर फ़ायरफ़ॉक्स स्थापित करने और इसके साथ सेलेनियम का उपयोग करने का निर्णय लिया है (मुझे इसे हटा नहीं देना चाहिए)।

तो, मुझे यकीन नहीं है कि यह स्थिर फ़ायरफ़ॉक्स के साथ काम करने के लिए मेरे सेलेनियम कॉन्फ़िगरेशन को कैसे सेट अप करें। शायद ड्राइवर के उपयोग के लिए फ़ायरफ़ॉक्स बाइनरी के पथ को प्राप्त करने के लिए मुझे अपने ऐप को कॉन्फ़िगर करना होगा? मैं जानना चाहता हूं कि कुछ और भी जरूरी है या नहीं।

** संपादित

मैं विन्यास गुण का उपयोग कर रहा उचित webdriver प्रारंभ करने में:

public abstract class SeleniumTestBase { 

    ... 

    public final void setUp() throws Exception { 
     String driverClass = getConfigurationProperty("selenium.webDriverClass"); 
     driver = (WebDriver) Class.forName(driverClass).newInstance(); 
     ... 
     doSetUp(); 
    } 

    public void doSetUp() { 
    } 

    ... 
} 

"selenium.webDriverClass" संपत्ति pom.xml इसलिए विभिन्न प्रोफ़ाइल मान अलग है द्वारा प्रबंधनीय है। वर्तमान में यह तत्काल होने के लिए ड्राइवर वर्ग का एफक्यूएन है।

उत्तर

15

जब तक मुझे पता है कि जावा आदेश

WebDriver driver = new FirefoxDriver(); 

आपके कंप्यूटर पर स्थापित Firefox ब्राउज़र चलेंगे।

लेकिन http://selenium.googlecode.com/svn/trunk/docs/api/java/index.html पर JavaDoc पढ़ने मुझे एहसास हुआ कि यह कैसे ओवरराइड करने के लिए जिस तरह से हो सकता है कि:

FirefoxBinary binary = new FirefoxBinary(new File("path/to/binary")); 
FirefoxProfile profile = new FirefoxProfile(); 
WebDriver driver = new FirefoxDriver(binary, profile); 
+0

वहाँ RemoteWebDriver एपीआई का उपयोग कर यह करने के लिए एक तरीका है? मैंने उल्लेख नहीं किया, लेकिन हम वेब चालक को तुरंत चालू करने के लिए वसंत का उपयोग कर रहे हैं और इसलिए उपर्युक्त शायद ही कभी हो सकता है। एक और तरीका प्रत्येक चालक के लिए वसंत के साथ कारखाने और कारखाने के तरीकों का उपयोग करना है, और बाइनरी पथ संपत्ति के नाम और मूल्य के लिए 2 उचितताएं, इसलिए प्रत्येक विशिष्ट चालक को कारखाने द्वारा उचित रूप से कॉन्फ़िगर किया जाएगा। फिर भी, यदि संभव हो तो मैं इसे कम कोड के साथ ऐसा करने का प्रयास करता हूं। –

+0

रिमोट वेब ड्राइवर मेरे लिए नया है। क्या आप सवाल संपादित कर सकते हैं और मुझे दिखा सकते हैं कि आप रिमोट वेब ड्राइवर को कैसे शुरू करते हैं? मुझे आशा है कि मैं कुछ ढूंढ सकता हूं। लेकिन वैसे भी sill - फ़ायरफ़ॉक्स ड्रायवर RemoteWebDriver का उप-वर्ग है ... –

+0

मैंने प्रश्न का पुनरीक्षण किया - अब बेस सेलेनियम टेस्ट क्लास के लिए कोड है। मैं ब्राउजर नाम के आधार पर कुछ सेवा-लोकेटर तर्क के साथ रिलेक्शन आधारित प्रारंभिकरण को हटाने की योजना बना रहा हूं, इसलिए pom.xml गुण ब्राउज़र का नाम होगा, और आवश्यक होने पर बाइनरी पथ होगा। कारखाना विधि जांच करेगी कि बाइनरी पथ प्रदान किया गया है और कंक्रीट ड्राइवर ऑब्जेक्ट को उचित रूप से बनाए और कॉन्फ़िगर करेगा। –

संबंधित मुद्दे

 संबंधित मुद्दे