【问题标题】:Need help on selenium hidden elements在硒隐藏元素方面需要帮助
【发布时间】:2014-07-01 20:07:38
【问题描述】:

我正在尝试使用 selenium 自动登录以下网站: 这是链接https://www.theice.com/

点击登录后,出现登录屏幕 - 我不知道这是什么:框架,面板...

我没有成功通过硒检测到这个屏幕有哪些元素、属性。因此我无法通过 selenium 填写必要的信息。

任何人都可以对此有所了解吗?

【问题讨论】:

  • 酷,你试过什么?该页面似乎是非常简单的 AJAX。没有什么花哨的,没有框架,没有弹出窗口。

标签: selenium login popup frame


【解决方案1】:

SiKing 是正确的,在这里。 DOM 没有什么太花哨的东西。使用您最喜欢的 DOM 检查器并检查元素,您应该能够识别定位器。

在这种情况下,前端开发人员看起来很周到,并为主要元素提供了“id”标签。一旦你可以建立从元素到它的 id 的关系,你只需要编写 selenium 命令来与它们交互。

虽然有很多很好的工具可以做到这一点,但我还是推荐 Firefox 的 FireBug 和 FirePath 插件。与 Chrome 的检查器类似,将鼠标悬停在检查器中的 DOM 元素上会突出显示页面上的元素本身。如果需要,FirePath 可以协助 CSS 选择器和 XPath。

在不知道您的开发方法(手工编码或 SeleniumIDE)或您选择的语言的情况下,我只是建议您阅读 http://docs.seleniumhq.org/docs/03_webdriver.jsp#selenium-webdriver-api-commands-and-operations 上的 Selenium 文档,以了解识别元素的方法以及随后的识别方法用过。

顺便说一句,这个网站是一个很好的前端设计的例子(至少粗略看一眼)。一旦您熟悉了这些概念,定位元素应该相对简单。玩弄它,最好的学习方法是实践(这就是为什么我没有给你解决方案的原因),你会明白的。

祝你好运。

(另外,我并不是说这条消息是在对你“低头”。我不熟悉你对这里的理解程度,所以我只是从基础开始)。

编辑: 在写下我的初始回复后,我突然想到,您可能会遇到显示模式的问题。单击“登录”链接后,您可能希望在测试中添加一个等待,以确保有足够的时间让模态在与其元素交互之前出现。一个简单的 Thread.sleep() 可以在这里工作,但我讨厌建议,除非这是万不得已的情况(我们都知道睡眠很糟糕,但有时它只需要完成)......相反,请阅读 WebDriverWait 类(假设 java) 和 ExpectedConditions 类。您可以将根模态元素或其子元素的定位器传递给 wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("yourLocator")); 它将等到条件满足(或发生超时)而不是Thread.sleep() 进行了一次硬暂停,并可能等待了不必要的长时间。 关键是,由于模态显示不是即时的,如果 WebDriver 尝试与尚未出现的元素交互,它可能会阻塞。使用等待可以缓解这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2014-02-06
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多