I am trying to autonomously download some CSVs on a regular basis from a website at my organization. They were so kind as to not afford me back-end database access or an API so I am having to hobble together something to take care of this for me. The website is an Oracle PeopleSoft site that prompts with a Windows Security
modal before the page even loads.
I am using Edge because the site doesn't seem to like Firefox and Chrome is giving me trouble in Selenium. I have in the past been able to scrape from OBIEE sites in this manner but this one is giving me trouble. The code below is what I am using to access the page and attempt to handle the login modal. Stepping through my code it seems that I don't get past the driver.get(url)
line at all.
Does anyone have suggestions on how to handle this?
driver = webdriver.Edge(EdgeDriverManager().install())
driver.get(url)
# Wait till the modal prompts you to log in
wait(driver, 5).until(EC.alert_is_present())
alert = driver.switch_to_alert()
# Provide creds with a tab in between so that you change from username field to password field
alert.send_keys(config.myUSERNAME + Keys.TAB + config.myPASSWORD)
# click ok
alert.accept()
EDIT: 01/25/2018
Trying to use Autoit as suggested and I am still having problems. The webdriver seems to not allow anything else to happen while its running. Any suggestions on how to handle this?
def browser(url):
driver = webdriver.Edge(EdgeDriverManager().install())
driver.get(url)
def login_handler(username, password):
print('This print never gets run? What is up with this?!')
# autoit.win_wait_active("Credential Dialog Xaml Host")
autoit.win_exists("Windows Security", "CORP\\")
# also tried this
# autoit.win_wait_active("Windows Security")
autoit.send(username)
autoit.send("{TAB}")
autoit.send(password)
autoit.send("{ENTER}")
t1 = Thread(target=browser(url))
t2 = Thread(target=login_handler(config.myUSERNAME, config.myPASSWORD))
t2.start()
t1.start()