how to click unlock on metamask wallet using selenium webdriver? - python

I want to test an app that needs to be connected to my Meta mask first. When I click on connect, the Meta mask page pops up, but I can't click on the word unlock and send the password, because when I hit the inspect element, it's not found.
I tried this by alert and did not work
how can I mange this extension using selenium in python
I appreciate every one who could answer this gold question thank you

Related

How to talk with alert from page and not browser with Selenium

This is what the alert looks like. It reads: The proxy it3.prmsrvs.com is requesting a username and password I have a program in Selenium that automates a certain amount of stuff on a website.
For some reason (this has been encountered also by my colleagues when using the browser normally without automation) there is the possibility of a pop-up showing in the webpage at a random point.
My program's objective is to load a page, get a list of all the elements corresponding to a specific tag and then click on them one by one. They all open in a new tab.
There is the possibility of a pop-up to show in the page after closing one of the tabs.
This pop-up asks for a login but all I have to do is dismiss it and the page will keep working like always.
Now, I've seen people using driver.switch_to.alert.dismiss() but this doesn't seem to work on this page.
I checked the function on a very basic js alert and the dismiss works perfectly, so I think it's the type of alert that is the issue.
I can't inspect the page so I don't know how to retrieve the iFrame of this alert. (I saw this as a possible solution online)
What should I do?

Unable to locate/click pop-up button with Selenium in Python

I'm using Selenium in Python 3 to access webpages, and I want to click on a pop-up button, but I am unable to locate it with Selenium.
What I'm describing below applies to a number of sites with a pop-up, so I'll use a simple example.
url = "https://www.google.co.uk"
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get(url)
The page has a pop-up for agreeing to cookies.
I want the script to click on the "I agree" button, but I'm unable to locate it.
I've found a few questions and posts about this online (including on Stackoverflow), but all the suggestions I found seem to fall in one of the following categories and don't seem to work for me.
Wait longer for the pop-up to actually load.
I've tried adding delays, and in fact, I'm testing this interactively, so I can wait all I want for the page to load before I try to locate the button, but it doesn't make any difference.
Use something like driver.switch_to.alert
I get a NoAlertPresentException. The pop-up doesn't seem to be an alert.
Locate the element using driver.find_element.
This doesn't work either, regardless of which approach I use (xpath, class name, text etc.). I can find elements from the page under the pop-up, but nothing from the pop-up itself. For example,
# Elements in main page (under pop-up)
driver.find_element_by_partial_link_text("Sign in") # returns FirefoxWebElement
driver.find_element_by_class_name("gb_g") # returns FirefoxWebElement
# Elements on the pop-up
driver.find_element_by_partial_link_text("I agree") # NoSuchElementException
driver.find_element_by_class_name("RveJvd snByac") # NoSuchElementException
The popup just doesn't seem to be there in the page source. In fact, if I try looking at the loaded page source from the browser, I can't find anything related to the pop-up. I understand that many sites use client-side scripts to load elements dynamically, so many elements wouldn't show up in the raw source, but that was the point of using Selenium: to load the page, interpret the scripts and access the end result.
So, what am I doing wrong? Where is the pop-up coming from, and how can I access it?

How to close iframe in selenium

So, I'm working on a Selenium webdriver Project, and, in one of the process, I needed to enter in na iframe, and then, send Keys to the input in there, but, now I want to close or exit that iframe to can click in a button outside that frame, check out me code piece:
WebDriverWait(bot,20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.top[title='Registration form']")))
WebDriverWait(bot, 20).until(EC.element_to_be_clickable((By.XPATH,'//*[#id="username"]'))).send_keys(self.usernameChar)
WebDriverWait(bot, 20).until(EC.element_to_be_clickable((By.XPATH,'//*[#id="username"]'))).send_keys(Keys.RETURN)
Can you guys help me?
Note: My google version is the 85
To exit from any <iframe> and set Selenium's focus on the Top Browsing Context you can use the following line of code:
driver.switch_to.default_content()
Reference
You can find a couple of relevant discussions in:
How to send text to the Password field within https://mail.protonmail.com registration page?

how to switch to windows security window and insert credentials

Here are my steps
1.Using selenium webdriver I am opening Edge
2.Then after click a link it opens popup security window. I am attaching a screenshot
3. I tried to switch that window using many different ways. It is not an alert because when I called for alert it says no such alerts are open.
I tried to call following but it gives error
window_after = driver.window_handles[1]
Following two lines gave me 1 handles:
handles = driver.window_handles
print("Number of handles ", len(handles))
Output:
Number of handles 1
if it is not alert, not a window, what is it? view source code does not print anything.
All i need is insert user name and password and then click "OK" button
I put the program for sleep 20 seconds and then manually selected the cursor to user name text box. The executed following code but it does nothing
ActionChains(driver).send_keys("Test").perform()
Side Note: Need answer for only for Microsoft Edge.
Selenium only works for browser automation. The Windows Security pop-up is an OS-level dialog and Selenium will not be able to recognize it. You could use third party tools like AutoIt with Selenium to automate non-browser based functionality. For the detailed steps, you could refer to this article.

Detect if a website is restricting navigating their site until you accept alert or popup - using selenium webdriver in python

Is there a way to detect using python selenium webdriver if a website is restricting viewing or navigating their site until you accept an alert or pop up?
This won't be one URL it will be many implemented in various ways.
If not is there a way to accept the pop up or alert?
You could probably monitor the window_handles. So if you are on a page and you can't find the element you want and you think that is because they are blocking you with an alert you can see if the number of window_handles increased, switch to the latest window_handle and deal with it.
for handle in driver.window_handles:
driver.switch_to_window(handle)
and you may end up using:
driver.switch_to.alert
which has a bunch of methods you can use.

Categories