10

मैं बजाय नई विंडो में एक ही विंडो में सभी लिंक खोलना चाहते हैं। मैंकैसे फ़ायरफ़ॉक्स एक ही विंडो में WebDriver के माध्यम से खोला सभी लिंक को खोलने बनाने के लिए?

profile.setPreference("browser.link.open_newwindow", 1) 

कोशिश की, लेकिन परिणाम है:

WARNING: traffic.loop 0 error: Preference browser.link.open_external may not be overridden: frozen value=2, requested value=1 

वहाँ एक एक और एक ही विंडो में लिंक को खोलने के लिए रास्ता नहीं है?

उत्तर

-1

वास्तव में, सेलेनियम एक नई विंडो में या एक ही विंडो में खुलता पेज के ज़िम्मेदार नहीं है। यह पूरी तरह से ब्राउज़र सेटिंग्स पर निर्भर करता है जिसे आपने निष्पादन के लिए उपयोग किया था।

एक खातिर Firefox ब्राउज़र

ले आप एक नई विंडो में सभी लिंक को खोलने के लिए चाहते हैं। इन चरणों का

  1. ओपन उपकरण
  2. क्लिक करें विकल्प
  3. क्लिक करें टैब मेनू
  4. Open new windows in a new tab instead.

के बॉक्स को चेक करें अब लिंक जो एक विंडो खोलता है पर क्लिक करें। यह एक ही विंडो के एक नए टैब में खुल जाएगा।

+0

यह काम नहीं करता जब भी मैं वेबड्राइवर से गुजरता हूं, तब भी मुझे एक ही विंडो में खोलने की बजाए एक नई विंडो मिल रही है। जब मैं मैन्युअल रूप से एक ही परीक्षण चलाता हूं तो यह उसी खिड़की में लिंक खोलता है जैसा इसे करना चाहिए। – DarthOpto

0

सेलिअम डॉक्स (https://code.google.com/p/selenium/wiki/FirefoxDriver) के अनुसार निम्नलिखित संपत्ति webdriver.firefox.profile फ़ायरफ़ॉक्स प्रोफ़ाइल का उपयोग करती है।

कौन सा है, जहां फ़ायरफ़ॉक्स से शुरू पर browser.link.open_newwindow हो जाता है। अपने परीक्षणों के लिए एक नई प्रोफ़ाइल बनाने के लिए आप यहां दिए गए निर्देशों का पालन कर सकते हैं https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles प्रोफ़ाइल के विस्तृत कॉन्फ़िगरेशन को प्रोफ़ाइल के pref.js को संपादित करके या प्रोफाइल को फायर करके और इसे कॉन्फ़िगर करने के द्वारा संपादित किया जा सकता है।

आशा है कि यह मदद की!

1

मैं एक वैकल्पिक हल मिल गया है!

JavascriptExecutor js = (JavascriptExecutor) driver; 
String script = "document.getElementById('yourFormOrAnchorId').target=''"; 
js.executeScript(script); 

उसके बाद आप अपने लंगर या रूप से कोई भी तत्व का चयन करें और क्लिक करें या इसे प्रस्तुत कर सकते हैं। लक्ष्य पृष्ठ एक ही टैब में खुल जाएगा।

यह मूल रूप से वर्तमान HTML पृष्ठ को बदलता है ताकि एंकर और रूप ब्राउज़र को नए टैब या विंडो खोलने के लिए बाध्य न करें। परीक्षण के लिए यह सबोपेटिमल हो सकता है, लेकिन यह परीक्षणों के लेखन को बहुत सरल बनाता है।

1

इस आजमाएं ... संशोधित फ़ायर्फ़ॉक्स प्रोफ़ाइल मापदंडों "browser.link.open_newwindow.restriction" और "browser.link.open_newwindow"।

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference("browser.link.open_newwindow.restriction", 0); 
profile.setPreference("browser.link.open_newwindow", 1); 

आप गूगल क्रोम का उपयोग कर रहे हैं तो बस this विस्तार स्थापित है और यह कार्य की बाकी की देखभाल करेंगे। यह एक्सटेंशन नए टैब में पॉप-अप खोलने के लिए भी आसान है जो आमतौर पर नई विंडो में खुलता है। (सबसे पहले आपको दिए गए स्थान से एक्सटेंशन .crx फ़ाइल डाउनलोड करने की आवश्यकता है।अगर यह मुझे

profile = webdriver.FirefoxProfile()

profile.set_preference("browser.link.open_newwindow", 3)

profile.set_preference("browser.link.open_newwindow.restriction", 0)

driver = webdriver.Firefox(firefox_profile=profile)

:)

ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 
0

आप फ़ायरफ़ॉक्स प्रोफ़ाइल मापदंडों को संशोधित करना चाहिए Thode काम नहीं करता है, तो आप सेट कर सकते हैं फ़ायरफ़ॉक्स विकल्प का उपयोग कर perference:

from selenium.webdriver.firefox.options import Options

opts = Options()

opts.set_preference("browser.link.open_newwindow.restriction", 0)

opts.set_preference("browser.link.open_newwindow", 3)

driver = webdriver.Firefox(firefox_options=opts)


(ए) browser.link.open_newwindow - फ़ायरफ़ॉक्स टैब में लिंक के लिए:

3: एक नए टैब को नई विंडो हटाने (डिफ़ॉल्ट)

2: लिंक एक नई विंडो

को खोलने के लिए अनुमति देते हैं 1: एक ही टैब

(बी) browser.link.open_newwindow.restriction में नई विंडो के लिए मजबूर - फ़ायरफ़ॉक्स टैब में लिंक

0 के लिए: सभी नई विंडो (यहां तक ​​कि स्क्रिप्ट विंडोज़) के तहत (ए) सेटिंग लागू

2: सामान्य विंडो के तहत (ए) सेटिंग लागू है, लेकिन नहीं करने के लिए स्क्रिप्ट खिड़कियों सुविधाओं के साथ (डिफ़ॉल्ट)

1: के तहत (ए) सेटिंग को ओवरराइड और हमेशा का उपयोग नई विंडो

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

  • कोई संबंधित समस्या नहीं^_^