【问题标题】:How can Selenium Webdriver get text from popup mouseover elementSelenium Webdriver如何从弹出的鼠标悬停元素中获取文本
【发布时间】:2022-08-14 04:38:58
【问题描述】:

我正在尝试从电子邮件字段中获取登录页面上鼠标悬停的文本。

这是网站:

https://app.involve.me/login/?_ga=2.49216998.1374332121.1660294616-36640509.1660294616

如果您将字段留空并尝试登录,则会出现一个弹出窗口并显示以下消息: \"请填写此字段\"

我无法从中获取文本 我尝试作为警报,工具提示无效 没有通往它的道路。 我希望有一个人可以帮助我 谢谢 enter image description here

    标签: selenium popup alert gettext


    【解决方案1】:

    的文本鼠标悬停在您所指的电子邮件字段的登录页面上是Constraint API's element.setCustomValidity() 方法的结果。

    笔记:HTML5 约束验证不会消除服务器端验证的需要。尽管预期的无效表单请求要少得多,但不兼容的浏览器(例如,没有 HTML5 和没有 JavaScript 的浏览器)或试图欺骗您的 Web 应用程序的坏人仍然可以发送无效的表单请求。因此,与 HTML4 一样,您还需要验证服务器端的输入约束,其方式与客户端所做的操作一致。


    解决方案

    要检索 element.setCustomValidity() 方法产生的文本,您可以使用以下任一 Locator Strategies

    • 使用Python选择器
      • 代码块:

        from selenium import webdriver
        from selenium.webdriver.support.ui import WebDriverWait
        from selenium.webdriver.support import expected_conditions as EC
        from selenium.webdriver.common.by import By
        
        driver.execute("get", {'url': 'https://app.involve.me/login/?_ga=2.49216998.1374332121.1660294616-36640509.1660294616'})
        print(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='email']"))).get_attribute("validationMessage"))
        
      • 控制台输出:

        Please fill out this field.
        

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      相关资源
      最近更新 更多