gyu*_*ula 3 python regex url selenium
那么,我想要做的是在特定网页上运行一个函数(这与我的正则表达式匹配).
现在我每秒都在检查它并且它有效,但我确信有一种更好的方式(因为它充满了请求的网站).
while flag:
time.sleep(1)
print(driver.current_url)
if driver.current_url == "mydesiredURL_by_Regex":
time.sleep(1)
myfunction()
Run Code Online (Sandbox Code Playgroud)
我想以某种方式这样做WebDriverWait但不确定如何.
Sve*_*ohn 12
这就是我最终实现它的方式。对我来说效果很好:
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 5)
desired_url = "https://yourpageaddress"
def wait_for_correct_current_url(desired_url):
wait.until(
lambda driver: driver.current_url == desired_url)
Run Code Online (Sandbox Code Playgroud)
ale*_*cxe 10
我想用WebDriverWait以某种方式做到这一点
究竟.首先,看看内置的预期条件是否可以解决这个问题:
title_istitle_contains样品用法:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
wait.until(EC.title_is("title"))
wait.until(EC.title_contains("part of title"))
Run Code Online (Sandbox Code Playgroud)
如果没有,您始终可以创建自定义预期条件以等待URL匹配所需的正则表达式.
小智 6
要真正知道 URL 已更改,您需要知道旧的。WebDriverWait在 Java 中使用实现将类似于:
wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.not(ExpectedConditions.urlToBe(oldUrl)));
Run Code Online (Sandbox Code Playgroud)
我知道这个问题是针对 Python 的,但它可能很容易翻译。
WebdriverWait这是使用with的示例expected_conditions:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://example.com/before'
changed_url = 'https://example.com/after'
driver = webdriver.Chrome()
driver.get(url)
# wait up to 10 secs for the url to change or else `TimeOutException` is raised.
WebDriverWait(driver, 10).until(EC.url_changes(changed_url))
Run Code Online (Sandbox Code Playgroud)