Updating Proxy Settings while Keeping the Driver Open in Selenium/Splinter

Previously, it was mentioned in an older version of Splinter/Selenium that changing Firefox web driver proxy settings at runtime was not possible. However, a more recent answer suggests that it can be done through JavaScript here, although I couldn't get the code to work in Python. Another solution proposed here involves closing and re-opening the browser, which is not ideal for my needs as I require the window/browser to remain open.

While plugins like FoxyProxy make it simple to change proxies on-the-fly, it seems that Selenium may not be able to interact with these plugins since they are considered page elements?

Given that Splinter aims to streamline Selenium functionality, it would be great if there was a straightforward method to achieve this task. Any workaround or hack to enable this functionality would also be greatly appreciated.

Answer №1

To implement this, follow the steps outlined below

browser.visit("about:config")

script = """
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);

prefs.setIntPref("network.proxy.type", 1);
prefs.setCharPref("network.proxy.http", "{0}");
prefs.setIntPref("network.proxy.http_port", "{1}");
prefs.setCharPref("network.proxy.ssl", "{0}");
prefs.setIntPref("network.proxy.ssl_port", "{1}");
prefs.setCharPref("network.proxy.ftp", "{0}");
prefs.setIntPref("network.proxy.ftp_port", "{1}");
"""

browser.execute_script(script.format("ProxyIP", "PORT"))

Note: Shoutout to Python Selenium Webdriver - Changing proxy settings on the fly

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Javascript - Accessing a specific element in an array using a variable

I am currently developing a webpage that interacts with a CGI backend. While the CGI backend is functioning well, my limited knowledge of JavaScript is making it hard for me to manage the results retrieved from AJAX JSON requests. Here's what I have: ...

What is the best way to incorporate JavaScript files into a Java application?

Java applications execute Javascript code. However, the Jquery library is too lengthy to be accommodated in a String variable. I am able to read jquery.js from a file but unsure of how to bundle it within a .jar file. ...

navigate to a different section on the page with a series of visuals preceding it

When I try to navigate to a specific dom element on another page, the page initially works fine but then jumps to somewhere before that element. I believe this issue occurs because the page calculates the position before images load, and once the images ar ...

What is the significance of declaring a variable outside of a JavaScript function? (Regarding jQuery and #anchor)

In my jQuery function, I needed to determine the current #anchor of the page. To achieve this, I utilized the jQuery URL Parser plugin. $.fn.vtabs = function() { alert("The current anchor is "+$.url.attr('anchor')); } Initially, the code c ...

Create directories in a nested structure using a multi-level JSON object with async.js

DEFINITION NewMethod#generateDirectoriesFromJSON (data, cb); data: JSON object. cb: Callback function. Parameters: err (Error), directoriesCreated (Boolean, true if at least one directory has been created). Assuming that the NewMethod class includes a ...

Issue with scroll bar not being repositioned correctly after hiding modal

I have a modal that opens when clicking on a button. However, once the modal is open, I am seeing two scroll bars: One for the modal itself Another for the html/body To try and remove the extra scrollbar, I used the following code: if ($(".dialog-popup ...

Disabling iframe javascript timers when iframe is no longer in the user's view

Currently, I am working on a blog post that will showcase various HTML5/Javascript animations through multiple <iframe> sections. These animations utilize methods such as requestAnimationFrame() and/or setInterval(). Due to limitations within the blo ...

Executing the Correct Command to Import a CSV File into MongoDB using OSX Terminal

I am attempting to upload a TSV file into Mongodb, but my lack of familiarity with Terminal is causing issues. I keep receiving an error when trying to execute the following command. Can anyone provide guidance? /mongoimport --db webapp-dev --collection ...

Is there a way to organize a list of arrays within a loop based on a specific index within each array in JavaScript?

Greetings, I am currently facing an issue with sorting a specific object of arrays. The structure is as follows: Allow me to provide a clearer example - I am receiving a string from an AJAX call formatted like this: "name|price|blah|blah@name|price|blah| ...

Angular's $q is a powerful tool for handling asynchronous operations, while

I've been struggling for hours trying to figure out how $q works. I'm attempting to use it with a function from the google.maps API, but I just can't seem to grasp it on my own. Maybe I completely misunderstand $q. Can someone help me or pro ...

When a user clicks on a child element in ReactJS, the onclick event returns as undefined

I am experiencing an issue with my restaurants list component. While I have an onClick event set up for each list item, clicking on a child element of the list item does not trigger the expected response. When this occurs, nothing happens or I see an undef ...

JavaScript Code to Remove an Element from an Array

I have a Javascript Filter Item Class and an array structured as follows: function FilterItem(filterId, filterType) { this.filterId = filterId; this.filterType = filterType; } var filterItemArray = []; To add Filter Items to this array, I use th ...

Pause before running a command (Selenium WebDriver)

Working with Java in Eclipse using Selenium WebDriver, I am looking for a way to wait for a command to be successfully executed without specifying a specific amount of time like Thread.sleep(). Ideally, I want the command to be executed immediately after ...

unzipping a jar file within JMeter

After exporting the Selenium code and jar files into Junit, I encountered an issue where the class file was not being retrieved when trying to open a Junit request in JMeter. I made sure to review the Junit 4 check list as well. public class Briquesoft ...

Exploring the possibilities with Rollbar and TypeScript

Struggling with Rollbar and TypeScript, their documentation is about as clear as AWS's. I'm in the process of creating a reusable package based on Rollbar, utilizing the latest TS version (currently 4.2.4). Let's delve into some code snipp ...

- Determine if a div element is already using the Tooltipster plugin

I have been using the Tooltipster plugin from . Is there a way to check if a HTML element already has Tooltipster initialized? I ask because sometimes I need to update the text of the tooltip. To do this, I have to destroy the Tooltipster, change the tit ...

press a button and choose an option from a dropdown menu on a website

Visiting a webpage within an iframe without scripting access at: This page is enclosed in another page located at: . My goal is to automatically click the "Schedule Now" button when accessing the docmein.com page. Once the "Request New Appointment" popu ...

Updating dropdown menu choices in real-time

Here is how my signup form is structured: <input type="radio" value="a">a <input type="radio" value="b">b <select name="group"> <?php for ($i=1; $i<=4; $i++) { echo '<option value="'.$i.'">'.$i.&apos ...

What contributes to Selenium's high memory usage?

I have a question regarding using Selenium with Firefox. I am running Firefox version 56.0.2, Selenium 3.5.1, and geckodriver 0.19.1 on an Ubuntu (x64) server in headless mode. After running my application for a long time, I noticed that the memory usage ...

Formatting JSON Date Output in a Unique Style

I am sending an api request and I would like to present the date in a similar format to what can be seen at this link: Here is the json data I am receiving: dates: { start: { localDate: "2017-04-06", localTime: "19:31 ...