2016-12-19 60 views
1

我有網絡類型,其中包含<bean:define>標籤的應用的元素。我正在尋找一個解決方案,通過firepathXPath創建標識此標籤。硒的XPath - 找到使用<bean:define>標籤名稱

當我挖了與此相關的標籤信息,我發現它在Struts用來設置基於ID和值的參數範圍。此外,沒有與此標籤相關的討論。

下文提到的網頁結構:

<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%"> 

我試圖通過創建

.//*bean:define[@id='loggedInUserUserName']/./iframe[@id='frame_admin_console'] 

Xpath找到iframe但是這並沒有給我一個有效xpathfirebug

有沒有什麼辦法可以找到DOM<bean:define>類型的元素通過在selenium web驅動中創建XPATH

回答

0

如果你的id,然後是更好地使用的ID,下面是幾個例子:

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

//iframe[@id='frame_admin_console'] 

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

您可以使用任何這些,我建議使用第二個直接選擇IFRAME。

請注意,如果你需要互動/檢查,你需要先切換到iframe中的iframe內的任何元素。

+0

真誠的讚揚給了我很好的例子,但我正在尋找更多獨特的方法來標識XPath中的「bean:define」標籤。 – ajesh

0

這是你的XPath找到bean:defined標籤

//*[@name="loggedInUser"] 

但我認爲你需要用這種方式來與frames

driver.switchTo().frame(0); // switching in frame (Here I am using index) 

// your code for interacting with element inside frames 

driver.switchTo().defaultContent(); // switching back from a frame 
+0

我非常感謝您的及時響應,但我正在尋找一種解決方案來識別「bean:define」標籤。不是我所知道的另一種替代方法。 – ajesh

1

互動有什麼辦法,我可以找到DOM bean的元素:通過在selenium web驅動程序中創建'XPATH'來定義類型?

您可以使用這種類型的標籤名稱,它使用到如下identi的xpathname()功能定位的元素: -

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

或多個特定

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

我試圖通過創建一個Xpath來查找iframe .//*bean:define[@id='loggedInUserUserName']/./iframe[@id='frame_admin_console'],但這並沒有給我一個有效的xpath在螢火蟲。

然後如下用途: -

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

參考name(node-set?)返回無論是作爲一個參數或在當前節點的電流節點傳遞節點集的完整文本節點名稱設置

這是很好的信息目的。但如果你的目標是切換到iframe,你可以簡單地切換是iframe使用它的id屬性值(如果id屬性值是唯一的),如下(假設你使用的是Java): -

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

感謝您的共享參考和您的答案。但不幸的是,我找不到具有** name()**功能的元素。它既不位於Firepath也不位於WebDriver。 – ajesh

+0

它既不位於Firepath也不位於WebDriver。 org.openqa.selenium.NoSuchElementException:no such element:Unable to locate element:{「method」:「xpath」,「selector」:「// * [name()='bean:define']」} – ajesh

+0

@ Ajesh確保您要查找的元素在幀/ iframe之外.. –