我希望通过输入具有特定地址部分的特定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的新手...所以我知道什么。
谢谢!
答案 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)