需要有关selenium隐藏元素的帮助

时间:2014-07-01 20:07:38

标签: selenium login popup frame

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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试图与尚未出现的元素进行交互,它可能会窒息。使用等待可以解决这个问题。