当前位置: 首页 > 知识库问答 >
问题:

使用Chrome时的Selenium“Selenium.common.exceptions.NoSuChelementException”

郎伟兆
2023-03-14
selenium.common.exceptions.NoSuchElementException: 
Message: no such element: Unable to locate element
{"method":"id","selector":"window1"
(Session info: chrome=63.0.3239.108
(Driver info: chromedriver=2.34.522913
(36222509aa6e819815938cbf2709b4849735537c), platform=Linux 4.10.0-42-generic x86_64)
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

browser = webdriver.Chrome()
browser.set_window_size(640, 480)
browser.get('http://www.foddy.net/Athletics.html?webgl=true')
browser.implicitly_wait(10)

canvas = browser.find_element_by_id("window1")

canvas.click()

while (True):
    action = ActionChains(browser)
    action.move_to_element(canvas).perform()
    canvas.click()
    canvas.send_keys("q")

共有1个答案

陈博容
2023-03-14

Selenium.common.exceptions.NoSuChelementException通常称为NoSuChelementException定义为:

exception selenium.common.exceptions.NoSuchElementException(msg=None, screen=None, stacktrace=None)

NoSuchelementException基本上在以下两种情况下引发:

>

  • 使用时:

    webdriver.find_element_by_*("expression")
    //example : my_element = driver.find_element_by_xpath("xpath_expression")
    
    element.find_element_by_*("expression")
    //example : my_element = element.find_element_by_*("expression")
    
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":".//*[@id='create-portal-popup']/div[4]/div[1]/button[3]"}
      (Session info: chrome=61.0.3163.100)
      (Driver info: chromedriver=2.32.498550 (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a),platform=Windows NT 10.0.10240 x86_64)
    
      null

    在这里,您将找到关于如何检查Selenium3.6中的元素的详细讨论,因为firebug不再是FF56的选项了?

    使用execute_script()方法滚动元素以查看如下:

    elem = driver.find_element_by_xpath("element_xpath")
    driver.execute_script("arguments[0].scrollIntoView();", elem)
    

    在这里,您将找到关于使用Selenium在Python中滚动到页面顶部的详细讨论

    elem = driver.find_element_by_xpath("element_xpath")
    driver.execute_script("arguments[0].removeAttribute('style')", elem)
    elem.send_keys("text_to_send")
    
    driver.switch_to.frame("iframe_name")
    driver.switch_to.frame("iframe_id")
    driver.switch_to.frame(1) // 1 represents frame index
    
    element = WebDriverWait(driver, 20).until(expected_conditions.presence_of_element_located((By.XPATH, "element_xpath']")))
    

    要等待visibility_of_element_locited:

    element = WebDriverWait(driver, 20).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, "element_css")
    

    等待element_to_be_clickable:

    element = WebDriverWait(driver, 20).until(expected_conditions.element_to_be_clickable((By.LINK_TEXT, "element_link_text")))
    

    您会看到NoSuchelementException,因为id定位器没有唯一地标识画布。要标识画布和click(),必须等待画布click,并使用以下代码块:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//canvas[@id='window1']"))).click()
    
      null

  •  类似资料:
    • 问题内容: 我正在尝试在Chrome上使用Selenium 玩QWOP,但我一直收到以下错误: 在使用以下代码时: 相同的代码在Firefox上可以完美地工作,但是由于我想使用chrome的功能以无头模式运行webgl游戏,因此我无法真正切换到Firefox。 任何解决方法可以使它正常工作? 问题答案: NoSuchElementException selenium.common.exceptio

    • 最近买了一台mac,能够毫无问题地运行Mozilla,但在安装Chrome扩展和运行硒时遇到了麻烦。有人能指导我在Mac Chrome上安装扩展和运行硒的过程吗?

    • 本文向大家介绍linux 下selenium chrome使用详解,包括了linux 下selenium chrome使用详解的使用技巧和注意事项,需要的朋友参考一下 安装chrome 安装chromedriver 淘宝源(推荐) 编写selenium自动化脚本 踩到的坑一: 中文乱码,解决方法: centos: ubuntu: 踩到的坑二: 不能截图,抛time out异常 selenium.c

    • 在运行selenium时,我需要从web商店加载一个chrome扩展。在我的研究中,我只发现了如何从本地机器加载扩展。 selenium是否可以从Web存储加载扩展?

    • 问题内容: 我下载了ChromeDriver,默认情况下,浏览器语言为英语,我需要将其更改为西班牙语,但我一直无法使用。 问题答案: 您可以通过添加Chrome的命令行开关 “ –lang”来实现。 基本上,所有你需要开始与ChromeOption说法,见API的详细信息。 以下是有关如何使用Selenium以西班牙语启动Chrome的C#代码的工作示例。 Java代码应该几乎相同(未经测试)。请

    • 问题内容: 我的脚本必须使用一组凭据登录到站点,然后在某些下拉菜单中导航以选择报告。选择报告后,将弹出一个新窗口,必须在其中调整参数以生成报告。设置完参数后,相同的弹出窗口将以生成的PDF格式刷新报告,并使用Chrome的内置PDF查看器显示。我的印象是,将某些选项传递给webdriver会禁用此PDF查看器,而只是下载文件,但是PDF查看器仍在显示,不会自动下载任何内容。我当然会丢失某些东西,或