我正在尝试用python编写代码,该代码可以通过自动浏览器(特别是Smores.tv)控制嵌入式视频播放器(jwplayer)。 (https://smores.tv/watch.php?v=j5UPZpjO&p=Yw4cOKqt)但是,当我尝试定位“暂停/播放”按钮或任何控件的元素时,它会返回nosuchelement异常。
我对此进行了一些研究,看来问题可能在于视频播放器位于iframe中,我能够找到它:
frame = driver.find_element_by_id("jwp-global-frame")
driver.switch_to.frame(frame)
不起作用,错误仍然是NoSuchElementException。可能有多个嵌入式iframe或类似的东西,但是我一直陷在这个问题上。(我也知道这个问题可能是由于页面未加载而引起的,因为我找不到明确等待的元素,所以我当前正在使用隐式等待页面加载)
frame = driver.find_element_by_id("jwp-global-frame")
driver.switch_to.frame(frame)
pausebutton = driver.find_element_by_xpath('//*[@id="player"]/div[9]/div[4]/div[2]/div[1]')
pausebutton.click()
答案 0 :(得分:1)
在示例网站中,播放按钮不在任何iframe中。
因此,我尝试了不切换到iframe的情况,它对我有用。
# removed the iframe lines
pausebutton = WebDriverWait(driver, 120).until(
EC.presence_of_element_located((By.XPATH, '//[@id="player"]/div[9]/div[4]/div[2]/div[1]')))
pausebutton.click()
您还可以使用css选择器将元素找到为.jw-icon-playback