[英]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"> Administrative Claiming</a>
不確定那些東西是什么。 如果您查看應用程序,鏈接/按鈕如下所示:
Administrative
Claiming
不知道如何格式化cssSelector,使用xpath來查找它? 用別的東西? 我很難過。 任何幫助非常感謝!
是一個不易碎的空間,需要包括在內。 以下是通過文字獲取鏈接的多種方法:
// 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 ` `
WebElement ele2 = driver.findElement(By.xpath("//a[.='\u00A0\u00A0Administrative \u00A0\u00A0Claiming']"));
// by xpath by removing the ` `
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.