簡體   English   中英

使用Selenium查找其中包含非破壞空間的鏈接

[英]Finding a link with a non-breaking space inside it with Selenium

我越來越好找到沒有任何ID或名字的鏈接,但這個讓我感到困惑,Google搜索沒有幫助。 我正在嘗試使用Java中的Selenium webdriver單擊鏈接。

 <a class="mainleftlinks" onclick="return TrackChanges();" href="/chcfweb/sbc/administration/aac/leftlinks.do?linkid=040000" styleclass="mainleftlinks">&nbsp;&nbsp;Administrative &nbsp;&nbsp;Claiming</a>

不確定那些東西是什么。 如果您查看應用程序,鏈接/按鈕如下所示:

 Administrative
 Claiming

不知道如何格式化cssSelector,使用xpath來查找它? 用別的東西? 我很難過。 任何幫助非常感謝!

&nbsp; 是一個不易碎的空間,需要包括在內。 以下是通過文字獲取鏈接的多種方法:

// by link text with 2 spaces at the begining and 3 spaces in the middle
WebElement ele1 = driver.findElement(By.linkText("  Administrative   Claiming"));

// by xpath with the caracter code of `&nbsp;`
WebElement ele2 = driver.findElement(By.xpath("//a[.='\u00A0\u00A0Administrative \u00A0\u00A0Claiming']"));

// by xpath by removing the `&nbsp;`
WebElement ele3 = driver.findElement(By.xpath("//a[translate(.,'\u00A0','')='Administrative Claiming']"));

nbsp是一個編碼的空格。 您沒有在鏈接中看到它,因為它會自動轉換為''。 我不確定我是否理解了您的問題,但您可以通過ID或類名輕松獲得該字段:

driver.findElement(By.id(yourId));

編輯

或者你可以通過類名得到它:

List<WebElement> elements = driver.findElements(By.className(className));

請注意,這將使您返回該類的所有元素。 然后你可以迭代它們並檢查文本以匹配你的情況。

使用xpath包含。 也許是一些類似的東西

driver.findElement(By.xpath("//*[contains(., 'Administrative') and contains(., 'Claiming')]"));

@PeterCook如果你想要你可以使用onclick。 嘗試

driver.findElement(By.cssSelector("*[onclick='return TrackChanges();']")).click

你需要使用文字嗎?

driver.findElement(By.xpath("//*[contains(translate(., '\u00A0', ' '), 'Administrative Claiming')]"));

有關解釋,請在此處查看我的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM