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!
3 Réponses :
Utilisez comme ceci,
from selenium.webdriver.support import expected_conditions as EC WebDriverWait(driver, 1000).until(EC.url_contains("desired_url"))
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)
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)
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 ... je>?
Utilisez cette api sélénium expected_conditions.url_changes
J'ai ceci: l'objet 'WebDriver' n'a pas d'attribut 'support'