2012-10-24 18 views
5

मैं ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसमें सेलेनियम वेबड्राइवर और तत्वों को ढूंढने और पृष्ठ का प्रबंधन करने के लिए एक विशिष्ट फ़ायरफ़ॉक्स प्रोफ़ाइल का उपयोग करना शामिल है।
सेलेनियम ग्रिड, थ्रेडसेफसेलेनियम सत्र के साथ वेबड्राइवर का उपयोग कैसे करें()

उदाहरण के लिए,
driver.findElement(By.xpath("//*[@id='foobar']"));
और
driver.manage().refresh();

मैं अपने प्रोजेक्ट में सेलेनियम ग्रिड को लागू करने की कोशिश कर रहा हूँ; हालांकि, सेलेनियम वेबड्राइवर के व्यापक उपयोग के साथ, क्या एक विशिष्ट वेबड्राइवर के साथ ThreadSafeSeleniumSessionStorage.session() स्थिर वस्तु शुरू करने का कोई तरीका है?

जहां तक ​​मेरा शोध किया है, यह द्वारा सेलेनियम वस्तु से WebDriver प्राप्त करने के लिए संभव है:

startSeleniumSession(seleniumHost, seleniumPort, browser, webSite); //Create and start the session() object 
//TODO: insert a specific WebDriver into the session() object 
WebDriver driver = ((WebDriverBackedSelenium) session()).getWrappedDriver(); //Get the WebDriver from the session() object 

उत्तर

2

मैं इस कोड प्रयास नहीं किया है लेकिन अगर यह तो काम करता है आप एक वस्तु है कि रखती होता सेलेनियम आधारित वेबड्राइवर। मेरी समझ के अनुसार यह सुविधा सेलेनियम 1 से सेलेनियम 2 में माइग्रेशन के लिए है। वेब ड्राइवर थ्रेड को सुरक्षित करने के लिए यह अनुशंसित तरीका नहीं है।

डिफ़ॉल्ट रूप से वेबड्राइवर थ्रेड सुरक्षित नहीं है। मैं प्रत्येक थ्रेड के लिए एक वेब ड्राइवर इंस्टेंस को तुरंत चालू करने की अनुशंसा करता हूं।

+0

क्या आप इसे करने के बारे में थोड़ी अंतर्दृष्टि दे सकते हैं? –

+0

उदाहरण के लिए यदि आप अपने टेस्टक्लास को समानांतर करना चाहते हैं, तो आप प्रति कक्षा एक वेबड्राइवर प्राप्त कर सकते हैं ... –

0

आप थ्रेडसेफसेलेनियम सत्र स्टोरेज क्लास के कार्यान्वयन को देख सकते हैं और एक नया थ्रेडसेफ वेबब्रिवर सत्र स्टोरेज बनाने के लिए उसी तर्क का उपयोग कर सकते हैं। क्या तुम नहीं कर सकते स्रोत here

यह थ्रेडलोकल कक्षा का उपयोग करता है। लागू करना मुश्किल नहीं होना चाहिए।