2017-10-20 28 views
0

J'utilise Python et Selenium. Mon problème est que je ne peux pas activer le modal qui sort et je ne peux pas cliquer sur les boutons qui s'y trouvent.Comment passer à un modal en Python en utilisant Selenium

Ce sont les éléments du modal:

Ceci est mon code:

moins l'url de cours

browser = webdriver.Chrome(executable_path="D:\\sasdsa\\automate\\chromedriver_win32\\chromedriver.exe") 
user_name = browser.find_element_by_xpath("//input[@id='username']") 
user_name.send_keys("test.employee") 

##Password 
pass_word = browser.find_element_by_xpath("//input[@id='password']") 
pass_word.send_keys("123") 

##log_in = browser.find_element_by_css_selector(".btn") 
log_in = browser.find_element_by_xpath("//button[@class='btn btn-sm btn-primary btn-block']") 
log_in.click() 

##punch 
#driver.find_element_by_id("//@id='product_view') 
#To open the modal 
punch_in = browser.find_element_by_xpath("//button[@class='btn btn-success btn-sm pull-right']") 
punch_in.click() 


#cant switch to the modal to access the button 
browser.switch_to_frame("product_view") 
punch_in2 = browser.find_element_by_xpath("//button[@id='save_me']") 
punch_in2.click() 
+0

Pourquoi essayez-vous de passer à 'div' comme à' iframe'? – Andersson

+0

Alors que dois-je faire? Im essaye de passer de la page principale à la modale ... –

+0

et ce qui devrait être le code pour cela? –

Répondre

0

Supprimer la ligne ci-dessous et il devrait fonctionner bien.

browser.switch_to_frame("product_view") 

Vous n'avez rien de spécial à faire ici. Un dialogue modal comme celui-ci est juste du HTML comme n'importe quel autre HTML sur la page. Vous y accédez comme vous le feriez pour n'importe quoi d'autre.

Cela dit ... si vous cliquez sur un bouton, etc., qui lance la boîte de dialogue, vous devrez probablement ajouter un WebDriverWait attendre la boîte de dialogue soit visible avant d'accéder à des éléments à l'intérieur, etc.