如何让python脚本等到输入特定的URL

时间:2019-02-21 05:30:01

标签: python selenium url selenium-webdriver random

我希望通过输入具有特定地址部分的特定URL来触发python脚本。

这里是一个例子:

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

基本上,我希望当URL中包含“ http://11.111.11.11:0000/Menu_EXAMPLE.jsp?NUMBER=”时激活python脚本。

这是我到目前为止写的:

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 :(得分:0)

像这样使用

from selenium.webdriver.support import expected_conditions as EC

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

答案 1 :(得分:0)

有关您的用例的更多信息将有助于提供更规范的答案。

不过,要随机调用一个带有特定地址部分的URL,您可以通过Set<ConstraintViolation<T>> constraintViolationSet = validator.validate(object); for (ConstraintViolation<?> constraintViolation : set) { stringBuilder.append(constraintViolation.getPropertyPath() + " "); stringBuilder.append(constraintViolation.getMessage() + ". "); stringBuilder.append(constraintViolation.getInvalidValue() + " "); stringBuilder.append("is not allowed"); } 标识范围,并通过range()迭代范围以构造完整的 URL 您可以使用以下解决方案:

  • 代码块:

    format()
  • 控制台输出:

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

如果您要查找随机数作为 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 生成如下内容:

  • 代码块:

    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)
    

答案 2 :(得分:0)

尝试了以上所有答案,没有任何运气。不管怎么说,多谢拉。 我想我的解释还不够

这对我来说是个把戏。

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)