J'ai une page example.com/user a deux champs nom et email. Après l'envoi du formulaire, il passe dans example.com/preview Dans la page d'aperçu, je dois soumettre le fichier de.

J'ai écrit ci-dessous le code

driver = webdriver.Firefox()
driver.get("http://example.com/user.php")

old_url = driver.current_url;

print(old_url);
print("===============")

email  = driver.find_element_by_name("mail")
name   = driver.find_element_by_name("name")

email.send_keys("example@mail.com")
name.send_keys("Jone")


form = driver.find_element_by_xpath("//form[1]")
form.submit()
print("=====From submited====")

driver.implicitly_wait(40)

new_url = driver.current_url
print(new_url)  **#still printing old URL**


try:
    element=driver.find_element_by_xpath("//input[@type='submit']")
except NoSuchElementException:
    print("No element found")


driver.save_screenshot('sc.png')

J'essaie de saisir le formulaire de page d'aperçu pour le soumettre. Mais je ne parviens pas à saisir le formulaire de page d'aperçu. Alors ici, j'essaye de donner une condition comme

if(old_url !=current_url) 
then 
 element=driver.find_element_by_xpath("//input[@type='submit']")  #form find in preview page

Mais je suis incapable de faire! Comment puis-je résoudre ce problème ?

1
Niloy Rony 27 août 2020 à 18:37

2 réponses

Meilleure réponse

Essayez d'utiliser ExplicitWait comme ci-dessous pour continuer l'exécution du code après avoir navigué vers nouveau URL:

from selenium.webdriver.support.ui import WebDriverWait

...
form.submit()    
WebDriverWait(driver, 10).until(lambda driver: driver.current_url != old_url)
new_url = driver.current_url
1
JaSON 27 août 2020 à 15:47

C'est parce que vous n'obtenez que cette page "http://example.com/user.php".

def get_url(base_url):
    return driver.get(base_url)

driver = webdriver.Firefox()
base_url = 'http://example.com/user.php'

get_url(base_url)

print(old_url);
print("===============")

email  = driver.find_element_by_name("mail")
name   = driver.find_element_by_name("name")

email.send_keys("example@mail.com")
name.send_keys("Jone")

get_url(driver.current_url) #getting form url

form = driver.find_element_by_xpath("//form[1]")
form.submit()
print("=====From submited====")

driver.implicitly_wait(40)
0
M.S.Z 27 août 2020 à 15:54