Как заставить скрипт Python ждать ввода определенного URL - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу, чтобы скрипт Python запускался путем ввода определенных URL-адресов с определенной частью адреса.

Вот пример:

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

По сути, я хочу, чтобы скрипт Python активировался, когда URL имеет"http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=" в нем.

Вот что я написал до сих пор:

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)**

Мне интересно, подойдет ли регулярное выражение, но я новичок в python... так что я знаю.

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Немного больше информации о вашем сценарии использования помогло бы дать более канонический ответ.

Однако чтобы вызвать случайный URL-адрес с определенной частью адреса, вы можете определитьдиапазон до range() и итерации диапазона до format() для создания полного URL , и вы можете использовать следующее решение:

  • Блок кода:

    for i in range(1000,1010):
        desired_url = "http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER={}".format(i)
        print(desired_url)
    
  • Вывод на консоль:

    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
    

Если вы ищете случайные числа как часть URL ,Вы можете использовать randrange() для генерации следующим образом:

  • Блок кода:

    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)
    
  • Консольный вывод:

    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
    
0 голосов
/ 21 февраля 2019

Перепробовал все ответы выше без удачи.В любом случае спасибо.Полагаю, моего объяснения было совсем недостаточно

Это помогло мне.

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)
0 голосов
/ 21 февраля 2019

Используйте вот так,

from selenium.webdriver.support import expected_conditions as EC

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