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

selenium.common.exceptions.ElementNotVisibleException:消息:尝试使用Python +Selenium访问元素时元素不可见

韩照
2023-03-14
问题内容

我正在尝试在以下网站中输入用户名和密码:https :
//www.thegreatcoursesplus.com/sign-
in

driver = webdriver.Chrome()
driver.get('https://www.TheGreatCoursesPlus.com/sign-in')
driver.find_element_by_xpath('//h1[@class="sign-in-input"]').click()

这给出了以下异常:

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible

然后我尝试使用Java脚本

driver.execute_script("document.getElementsByClassName('sign-in-input')[0].click()")
cmd = "document.getElementsByClassName('label-focus')[0].value = 'abc@abc.com'"
driver.execute_script(cmd)

没有错误,但没有文本发送到“电子邮件地址”字段。

有人可以指导我以正确的方式输入电子邮件地址,密码,然后单击“登录”。

感谢您的协助


问题答案:

此错误消息…

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible

…表示所需的 元素WebDriver 实例尝试查找时在HTML
DOM中
不可见 。 __

ElementNotVisibleException

当DOM
Tree上存在某个元素时,会引发ElementNotVisibleException,但该元素不可见,因此无法与之交互。

原因

一个独到之处采取远离 ElementNotVisibleException 是事实 WebElement目前
的HTML内,并试图此异常时经常遇到click()或者read是从视图中隐藏的元素的属性。

作为 ElementNotVisibleException 确保 WebElement
HTML中,以便未来的解决方案将是两个折痕按照下面的步骤详情如下:

  • 如果下一个步骤是 读取 所需的元素的任何属性,则需要以诱导WebDriverWait在-结合expected_conditions子句设置为visibility_of_element_located如下:
        from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC

    my_value = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "element_xpath"))).get_attribute("innerHTML")
  • 如果下一个步骤是调用 click() 所希望的元件上,则需要以诱导WebDriverWait在-结合expected_conditions子句设置为element_to_be_clickable如下:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "element_xpath"))).click()

这个用例

您构造为的 xpath//h1[@class="sign-in-input"]与任何节点都不匹配。我们需要创建唯一的 xpath
来定位表示的元素Email AddressPassword并创建 WebDriverWaitSign In按钮。下面的代码块将帮助您实现相同的目标: __

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

    options = Options()
    options.add_argument("start-maximized")
    options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(chrome_options=options, executable_path="C:\\Utility\\BrowserDrivers\\chromedriver.exe")
    driver.get('https://www.TheGreatCoursesPlus.com/sign-in')
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='modal']//input[@name='email']"))).send_keys("abc@abc.com")
    driver.find_element_by_xpath("//div[@id='modal']//input[@name='password']").send_keys("password")
    driver.find_element_by_xpath("//div[@id='modal']//button[@class='color-site sign-in-button']").click()


 类似资料:
  • 问题内容: 我正在寻找一个有趣的程序,但是我在硒方面有一些问题, 我需要一些帮助……这是程序(我删除了 webdriver目录,因为文件夹名称包含其他人的名称) 因此,目的很简单,应该打开一个窗口,键入文本,然后单击 一个按钮。一切正常,但单击不起作用,这是错误: 因此,我不是专家,但它说:元素不是相互联系的吗?这是什么意思 ,我该如何解决?我真的很感谢您的回复… 问题答案: 要将字符序列发送到网

  • 问题内容: 我敢肯定,这已经在某个地方得到了回答,因为这是一个非常基本的问题-但是,对于我的一生,我无法在网上找到答案。我觉得自己是个白痴,但是我不得不问,这是: 我正在编写一个python代码,该代码将生成域中所有页面地址的列表。这是使用selenium2完成的-当我尝试访问由selenium产生的所有链接的列表时,会发生我的问题。 这是我到目前为止的内容: 该变量不包含在页面上找到的链接- 而

  • 问题2:点击红色按钮后,如何使用python selenium在弹出窗口中获取按钮上的元素? element:button type=“button”class=“swal2-confirm swal2-styled”aria-label=“”style=“background-color:rgb(48,133,214);border-left-color:rgb(48,133,214);bord

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

  • 我刚刚开始学习python。所以在这一章中,基本上是使用硒创建一个价格跟踪器。 下面的照片是我使用selenium试图获得的。 截图 如果我尝试 它显示了红海的线条,没有布赫的信息:没有这样的元素 然后我试着 输出为: 我真的是编程新手...所以我试着在最后使用. text,运气不好! 我怎么做才能得到价格?

  • 我正试图对这个网站进行测试。(https://www.phptravels.net/),我想测试一下它的登录特性。有一个“我的帐号”链接,需要先点击,显示登录和注册按钮的下拉。HTML代码如下所示: 当我尝试单击“我的帐户”按钮时,它抛出一个错误消息,说“元素不可见”。我很困惑,因为显然这个按钮一直可见。代码如下: 我的代码有什么问题?谢谢你。