2014-03-14 45 views
1

如圖所示,我在網頁 中的樹結構中有一個HTML文件層次結構。如何通過在Selenium WebDriver中搜索其文本來訪問鏈接?

enter image description here

的HTML代碼是

<div class="rtMid rtSelected"> 
    < span class="rtSp"/> 
    < img class="rtImg" alt="Automation" src="http://192.168.1.6/eprint_prod_3.8/images/StoreImages/close_folder.png"/> 
    < span class="rtIn" title="Automation">Automation (1)</span> 
</div> 

在硒的webdriver有沒有辦法通過僅搜索文本點擊Automation (1)鏈接,我不想使用XPath的原因是位置將會改變,所以有沒有辦法通過它的文本找到它並點擊它。

+0

的[定位通過XPath的元素的文本]可能重複(http://stackoverflow.com/questions/19236531/locate-an-element-text-by-xpath) – olyv

回答

2

XPath功能強大,你發現它不可靠,你沒有正確使用它。請花一些時間在XPath Tutorial

這是針對您的問題的簡單解決方案,但您可能需要考慮許多其他事情。例如。匹配標題和文本等。

driver.findElement(By.xpath(".//span[text()='Automation (1)']")).click(); 

CSS選擇器功能強大且速度快,比XPath更具可讀性。但在你的情況下,它不支持通過文本查找。

+0

u能提供一個代碼我試圖 \t \t \t \t driver.findElement(By.partialLinkText(「Automation」))。click(); –

+0

@ Santhosh.S:確保它只匹配一個元素。如果有其他元素具有相同的文本,則需要提供更多的HTML。上面的答案提供**精確**匹配。 –

+0

@ Santhosh.S:不,它不是完整的代碼。您需要爲所有文件夾節點提供HTML。但首先嚐試提取匹配,如果不工作,則調試爲什麼。 –

0

按標題搜索行之有效

driver.findElement(By.xpath("//span[contains(@title,'Automation')]")).click(); 
0

2途徑

方法1:

類名:

在這裏,我們有針對文本自動化類名(1)那是rtIn。 執行driver.findElement(By.className(「rtIn」))。click();

方法2:

通過父母與類名父的

CSS選擇的CSS選擇:.rtSelected

WebElement元素1 = driver.findElement(By.cssSelector( 「rtSelected」。) ) element1.className(「rtIn」)。click();

方法3:

通過直接CSS選擇: 1. .rtIn 2. .rtSelected> .rtIn

這是更好地使用第二個CSS選擇

driver.findElement( By.cssSelector(「.rtSelected> .rtIn」))。click();

相關問題