当前位置: 首页 > 面试题库 >

ElementNotVisibleException:消息:尝试在YouTube搜索中单击顶部视频时,元素不可交互错误

丘浩宕
2023-03-14
问题内容

我似乎无法找到一种方法来单击正确的元素以获取所需的网址。本质上,我试图在youtube搜索中单击 顶部 视频(返回最高排名的视频)。

如何解决ElementNotInteractableException:元素在SeleniumWebdriver中不可见?
->这是针对Java的,但是它让我朝着正确的方向前进(知道我需要执行JavaScript)

http://www.teachmeselenium.com/2018/04/17/python-selenium-interacting-with-
the-browser-executing-javascript-through-
javascriptexecutor/-
>这显示了我应该如何尝试在蟒蛇。

我也看过无数关于等待的文章,但是它们并不能解决我的问题。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

wrds = ["Vivaldi four seasons", "The Beatles twist and shout", "50 
cent heat"] #Random list of songs

driver = webdriver.Chrome()

for i in wrds:
    driver.get("http://www.youtube.com")
    elem = driver.find_element_by_id("search")
    elem.send_keys(i)
    elem.send_keys(Keys.RETURN)

    time.sleep(5)
    driver.execute_script("arguments[0].click()",driver.find_element_by_id('video-title')) #THIS CLICKS ON WRONG VIDEO
    #elem = driver.find_element_by_id("video-title").click() #THIS FAILS
    time.sleep(5)

    url = driver.current_url

driver.close()

ElementNotVisibleException:Message:elementnotinteractable当我不执行任何javascript时,我会收到一个错误消息(即使它实际上已经工作了,而且几乎没有健壮性)。当我执行JavaScript时,它会点击错误的视频。

我尝试了所有类型的“显式”和“隐式”等待,现在它们确实起作用了。我很确定我需要执行一些JavaScript,但是我不知道该怎么做。


问题答案:

你快到了 您需要诱导 WebDriverWait 来使 元素可单击, 并且可以使用以下解决方案:

  • 代码块:

    from selenium import webdriver
    

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

    wrds = [“Vivaldi four seasons”, “The Beatles twist and shout”, “50 cent heat”]
    kwrd = [“Vivaldi”, “Beatles”, “50”]
    options = webdriver.ChromeOptions()
    options.add_argument(“start-maximized”)
    options.add_argument(“disable-infobars”)
    options.add_argument(“–disable-extensions”)
    driver=webdriver.Chrome(chrome_options=options, executable_path=r’C:\WebDrivers\chromedriver.exe’)
    for i, j in zip(wrds, kwrd):
    driver.get("https://www.youtube.com/”)
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, “input#search”))).send_keys(i)
    driver.find_element_by_css_selector(“button.style-scope.ytd-searchbox#search-icon-legacy”).click()
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, “h3.title-and-badge.style-scope.ytd-video-renderer a”))).click()
    WebDriverWait(driver, 10).until(EC.title_contains(j))
    print(driver.current_url)
    driver.quit()



 类似资料:
  • 问题内容: 我有一个包含源代码的页面,如下面的代码。在执行操作后,在其中显示“撤消”和“关闭”按钮。我试图单击“关闭”按钮。我已经尝试了下面的所有三个代码块,但都无法正常工作。有人可以指出我做错了什么,还是建议其他尝试? html来源: 代码尝试: 错误: 问题答案: 与文本的元素 关闭 是一个动态的元素,以便找到你要引起元素 WebDriverWait 的 元素是可点击 ,你既可以使用以下方法解

  • 我试图登录到beeradvocate.com抓取(抓取)一些啤酒数据。我试过硒,但失败了。 这是html 我尝试使用名称、值和类,但一切都失败了。我最后一次尝试Xpath,但也失败了。 网站和检查 我的代码: 我已经使按钮工作: 然而,我需要能够执行发送_键来输入id和pw来登录。。。有人知道吗?

  • 我试图点击的div的HTML是: 我想使用。单击类名为'class=“btn btn-green''的按钮上的()。 我已经使用以下代码来选择元素(在遵循其他类似SO问题的解决方案后)。 谢谢

  • 我有两个输入文本 通过打印元素标题,我确认了第一个和第二个输入元素都是可访问的。到目前为止,我尝试了setAttribute,executescript……但没有一个有效(或者我做了一些错误)(也许,它可能对谷歌chrome自动更新有作用?这是我现在唯一能想到的)

  • 我试图用值“fab”填充搜索输入类型框,然后我想用该关键字显示下一个url,但由于元素不可交互,我得到了这个错误。我怎样才能解决这个问题? 错误:- 回溯(最近一次调用):文件“C:/Users/Mansi Dhingra/Desktop/Projects/api/news/news\u python.py”,第10行,在搜索栏中。clear()文件“C:\Users\Mansi Dhingra\

  • 问题内容: 我正在尝试在以下网站中输入用户名和密码:https : //www.thegreatcoursesplus.com/sign- in 这给出了以下异常: 然后我尝试使用Java脚本: 没有错误,但没有文本发送到“电子邮件地址”字段。 有人可以指导我以正确的方式输入电子邮件地址,密码,然后单击“登录”。 感谢您的协助 问题答案: 此错误消息… …表示所需的 元素 在 WebDriver