1
votes

Comment faire attendre le script python jusqu'à la saisie d'une URL spécifique

Je veux que le script python soit déclenché en entrant des URL spécifiques avec une partie spécifique de l'adresse.

Voici un exemple:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome('./chromedriver')
wait = WebDriverWait(driver, 9999)
desired_url = http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=\d{4}
def wait_for_correct_current_url):
      wait.until(lambda driver: driver.current_url == desired_url)



driver.get("http://www.google.com")
wait_for_correct_current_url(desired_url)
**(Script that activates after entering desired_url)**

En gros, je veux que le script python s'active lorsque l'URL a " http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER= "dedans.

Voici ce que j'ai écrit jusqu'ici:

http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1234
#1234 can be any random 4 digits Number

Je me demande si regex fera l'affaire, mais je suis nouveau sur python ... alors que sais-je?

Merci d'avance!


2 commentaires

Utilisez cette api sélénium expected_conditions.url_changes


J'ai ceci: l'objet 'WebDriver' n'a pas d'attribut 'support'


3 Réponses :


1
votes

Utilisez comme ceci,

from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 1000).until(EC.url_contains("desired_url"))


0 commentaires

0
votes

Un peu plus d'informations sur votre cas d'utilisation aurait aidé à fournir une réponse plus canonique.

Cependant, pour appeler une URL avec une partie d'adresse spécifique de manière aléatoire, vous pouvez identifier la plage via range () et parcourez la plage via format () pour construire l ' URL complète et vous pouvez utiliser la solution suivante:

  • Bloc de code:

    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=8776
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1662
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=3255
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1524
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=6463
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=4511
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=3273
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=7471
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=4672
    http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=2828
    
  • Sortie de la console:

    import random
    
    for i in range(0,10) :
        desired_url = "http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER={}".format(str(random.randrange(1000, 9999)))
        print(desired_url)
    
  • Si vous recherchez des nombres aléatoires dans le cadre de l ' URL , vous pouvez utiliser randrange () pour générer comme suit:

    • Bloc de code:

      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1000
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1001
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1002
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1003
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1004
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1005
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1006
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1007
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1008
      http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=1009
      
    • Sortie de la console:

      for i in range(1000,1010):
          desired_url = "http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER={}".format(i)
          print(desired_url)
      


    0 commentaires

    0
    votes

    J'ai essayé toutes les réponses ci-dessus sans succès. Merci quand même. Je suppose que mon explication n’était tout à fait pas suffisante

    Cela m’a fait un truc.

    def condition(driver):
    look_for = ("Any word within expected URL1", "Any word within expected URL2")
    url = driver.current_url
    for s in look_for:
        if url.find(s) != -1:
            [Any Script I want to activate]
    
    return False
    
    wait.until(condition)
    


    1 commentaires

    Comment cette solution répond-elle à la question où vous avez mentionné ... script à déclencher en entrant des URL spécifiques avec des une partie de l'adresse ... et vous cherchiez ... je me demande si regex fera l'affaire, mais je suis nouveau sur python ... alors que sais-je ... ?