Selenium xpath - 使用<bean:define>标记名称定位元素

时间:2016-12-19 09:35:35

标签: selenium xpath selenium-webdriver

我有一个网络类型的应用程序,其中包含<bean:define>标记。我正在寻找通过firepath XPath创建来识别此代码的解决方案。

当我挖掘与此标记相关的信息时,我发现它在Struts中用于根据id和value参数设置范围。此外,没有与此标签相关的讨论。

下面提到的网页结构:

<bean:define id="loggedInUserUserName" name="loggedInUser" property="firstName"> 
<iframe id="frame_admin_console" class="noautowidth" name="sample_1" rel="col1" scrolling="auto" t_src="scriptPath" style="visibility: visible; height: 861px; width: 1608px;" src="srcPath=" height="iframe_height" frameborder="0" width="100%">

我尝试通过创建iframe

来找到Xpath
.//*bean:define[@id='loggedInUserUserName']/./iframe[@id='frame_admin_console']

但是这并没有在xpath中给我一个有效的firebug

我是否可以通过在selenium网络驱动程序中创建DOM找到<bean:define>类型的XPATH元素?

3 个答案:

答案 0 :(得分:2)

  

有没有办法找到bean的DOM元素:通过创建&#39; XPATH&#39;定义类型在selenium web驱动程序?

您可以使用xpath的{​​{3}}函数找到具有此类标记名称的元素,该函数用于识别如下: -

//*[name() = 'bean:define']

或更具体的

//*[name() = 'bean:define' and @id = 'loggedInUserUserName']
  

我试图通过创建.//*bean:define [@id =&#39; loggedInUserUserName&#39;] /./iframe[@id=' frame_admin_console'的Xpath找到iframe。 ],但这并没有在萤火虫中给我一个有效的xpath。

然后使用如下: -

//*[name() = 'bean:define' and @id = 'loggedInUserUserName']//iframe[@id='frame_admin_console']

参考name()返回作为参数传递的节点集或当前节点集中当前节点的完整文本节点名称

这对于信息目的是有益的。但是,如果您的目标是切换到iframe,则只需使用它的{id}属性值(如果id属性值是唯一的)切换iframe,如下所示(假设您使用的是java): -

driver.switchTo().frame("frame_admin_console");

答案 1 :(得分:0)

如果你有id,那么最好使用id,这里有几个例子:

//*[@id='loggedInUserUserName']//iframe

//iframe[@id='frame_admin_console']

//*[@id='loggedInUserUserName']//iframe[@id='frame_admin_console']

你可以使用其中任何一个,我建议使用第二个来直接选择iframe。

请注意,如果您需要互动/检查iframe中的任何元素,则需要先切换到iframe。

答案 2 :(得分:0)

以下是找到data-sly-unwrap代码

的XPath
bean:defined

但我认为您需要使用这种方式与//*[@name="loggedInUser"]

进行互动
frames
相关问题