如何等到使用 Selenium 和 Python 定义 src 属性
How to wait until the src attribute is defined using Selenium and Python
我在 python 中用 selenium 写了一个程序。
我的目标是在页面中找到视频的 src。
这是我的代码
video_element = chrome_driver.find_element_by_tag_name("video")
video_src = video_element.get_attribute("src")
当我尝试检查 video_src
时,我得到一个空字符串,但是如果我在尝试获取 src 之前输入 time.sleep(1)
,我会得到视频的真实 link。
我试过使用 WebDriverWait
而不是像这样 time.wait
video_element = WebDriverWait(chrome_driver, 3).until(
expected_conditions.element_to_be_clickable((By.TAG_NAME, "video"))
)
但是我找不到任何等到src标签被真实填充的条件link。
有没有办法用硒代替时间等待? (随着时间的推移,不保证 src 会被填充)
你可以试试下面的方法。
video_element = WebDriverWait(chrome_driver, 3).until(
expected_conditions.presence_of_element_located((By.XPATH, "//video[not(@src='')]"))
)
请尝试以下解决方案,然后您必须切换到 iframe
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as Wait
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")
driver.get('https://www.thewatchcartoononline.tv/www-working-episode-1-english-subbed')
driver.switch_to.frame("anime-js-0")
video_element = WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.ID, "video-js_html5_api")))
val = video_element.get_attribute("src")
print val
输出:
要提取 src 属性的值,您必须为所需的 visibility_of_element_located()
引入 WebDriverWait 并且您可以使用以下任一项 :
使用CSS_SELECTOR
:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.TAG_NAME, "video"))).get_attribute("innerHTML"))
使用XPATH
:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//video"))).get_attribute("src"))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
我在 python 中用 selenium 写了一个程序。 我的目标是在页面中找到视频的 src。 这是我的代码
video_element = chrome_driver.find_element_by_tag_name("video")
video_src = video_element.get_attribute("src")
当我尝试检查 video_src
时,我得到一个空字符串,但是如果我在尝试获取 src 之前输入 time.sleep(1)
,我会得到视频的真实 link。
我试过使用 WebDriverWait
而不是像这样 time.wait
video_element = WebDriverWait(chrome_driver, 3).until(
expected_conditions.element_to_be_clickable((By.TAG_NAME, "video"))
)
但是我找不到任何等到src标签被真实填充的条件link。 有没有办法用硒代替时间等待? (随着时间的推移,不保证 src 会被填充)
你可以试试下面的方法。
video_element = WebDriverWait(chrome_driver, 3).until(
expected_conditions.presence_of_element_located((By.XPATH, "//video[not(@src='')]"))
)
请尝试以下解决方案,然后您必须切换到 iframe
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as Wait
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")
driver.get('https://www.thewatchcartoononline.tv/www-working-episode-1-english-subbed')
driver.switch_to.frame("anime-js-0")
video_element = WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.ID, "video-js_html5_api")))
val = video_element.get_attribute("src")
print val
输出:
要提取 src 属性的值,您必须为所需的 visibility_of_element_located()
引入 WebDriverWait 并且您可以使用以下任一项
使用
CSS_SELECTOR
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.TAG_NAME, "video"))).get_attribute("innerHTML"))
使用
XPATH
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//video"))).get_attribute("src"))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC