我正在尝试使用IE和Watir自动化一个网页。当我使用chrome加载页面并使用开发工具时,我可以确定需要填充的字段,包括它的id和名称。
然而,Watir无法找到该字段。我怀疑这是因为它被深埋在HTML层次结构中。
我可以告诉Watir对该字段进行递归搜索(在所有框架、区域和部分中)吗?
如果不可能,我可以从chrome开发工具中提取元素路径并在我的脚本中使用它吗?
发布于 2011-07-19 16:34:34
如果Watir找不到HTML元素,那么它很可能在一个框架中。
更多信息:http://wiki.openqa.org/display/WTR/Frames
发布于 2011-08-02 01:22:44
如果看不到HTML,或者至少看不到相关对象的路径,就很难给出具体的建议(确切的代码)。
除了框架(每个框架的行为就像它自己唯一的网页一样),你只需要提供尽可能多的“路径”到一个对象,以确保唯一性。例如,如果你有一个事先不知道URL的链接,它没有唯一的文本或标识符,但它在另一个容器元素中,比如div,它有一些唯一的名称、类、id等(或者它们的组合),那么你可以从容器开始识别对象。
browser.div(:how, what).link(:index, 0).click #note index would be 1 in watir 1.x, 0 in 2.x and watir-webdriver在框架的情况下,特别是(上帝保佑你)嵌套的框架,你需要指定所有的框架,这些框架是到对象的路径的一部分,然后需要足够的细节来确保它可以在包含你试图访问的元素的框架中被唯一地标识。
(社论):据我所见,大多数现代网站在很大程度上避免使用框架,除非在极少数特定的情况下,例如‘框架’到外部网站的链接(例如,链接到它的群组讨论线程中发布的其他网站的链接)使用许多框架被许多人认为是'web 1.0‘,甚至不是’9/11之前‘,他们使用CSS和其他方法来实现与使用框架为子区域等相同的视觉效果,而没有框架的所有缺点。
发布于 2011-07-19 03:37:27
Sam,Watir默认情况下会搜索整个页面,而不管元素位于何处。我的猜测是Watir浏览器命令中的how/what是不正确的。您可以在text_field定位器和文本字段的HTML码上发布您的尝试吗?
如果您知道如何使用Chrome/Firefox/IE开发工具(id、类、名称、标题等),并且知道“什么”("firstName“、"MyTextField”、"blue_text_field")等,那么您可以使用Watir中的这些细节来定位它:
@browser.text_field(:how, what)
@browser.text_field(:id, "firstName")请在此处查看这些方法的文档:http://watir.com/documentation/
https://stackoverflow.com/questions/6736776
复制相似问题