J'essaie de lancer automatiquement le convertisseur de devises en https://www.mastercard.us/en-us/consumers/get-support/convert-currency.html en utilisant Selenium en Python. Voici ce que je suis arrivé à ce jour:Comment attendre le champ de saisie non vide dans Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
link1 = 'https://www.mastercard.us/en-us/consumers/get-support/convert-currency.html'
driver1 = webdriver.PhantomJS()
driver1.get(link1)
script = """ var select = arguments[0];
for(var i = 0; i < select.options.length; i++) {
if(select.options[i].value == arguments[1]) {
select.options[i].selected = true;
}
}
"""
driver1.find_element_by_id('getDate').send_keys('05-Sep-2017')
select = driver1.find_element_by_id('firstID')
driver1.execute_script(script, select, 'USD');
driver1.find_element_by_name('txtTAmt').send_keys('1.00')
driver1.find_element_by_name('txtBankFee').send_keys('0.00')
select = driver1.find_element_by_id('newID')
driver1.execute_script(script, select, 'EUR');
driver1.find_element_by_id('btnSubmit').click()
wait = WebDriverWait(driver1, 100)
element = wait.until(EC.presence_of_element_located((By.XPATH,
'//*[@name="txtCardAmt" and text() != ""]')))
print(element.text)
Le problème est que le champ « txtCardAmt » ne se peuplé et j'obtenir une exception de délai d'attente. Ma question est, comment puis-je attendre que le serveur termine le calcul? PS: Je sais qu'il existe des moyens plus simples de sélectionner des options en utilisant la classe Select
, mais dans ce site Web, elles ne fonctionnent pas pour une raison quelconque.
Vous devez utiliser le 'wait.until_not' CE pour text_to_be_present_in_element wait.until_not (ExpectedConditions.text_to_be_present_in_element ((By.Name, "txtCardAmt"), "le texte existant)) ... Cela devrait attendre que le texte existant disparaisse. La liste déroulante est créée avec une combinaison de span, ul et li. Vous devrez cliquer manuellement et sélectionner l'option – Grasshopper