以下代碼表示「方法text()對於類型Test未定義」,並提示我創建一個新函數text()in類測試By.xpath(contains(text(),「Some text」)給出錯誤
driver.findElement(By.xpath(contains(text(), "menu")));
我使用Eclipse開普勒和硒2.39.0
我收到的例外是:。org.openqa.selenium.NoSuchElementException
我無法弄清楚我要去哪裏錯了
以下代碼表示「方法text()對於類型Test未定義」,並提示我創建一個新函數text()in類測試By.xpath(contains(text(),「Some text」)給出錯誤
driver.findElement(By.xpath(contains(text(), "menu")));
我使用Eclipse開普勒和硒2.39.0
我收到的例外是:。org.openqa.selenium.NoSuchElementException
我無法弄清楚我要去哪裏錯了
XPath
表達式需要用引號括起來 - 因爲你試圖解析的表達式也包含一個字符串字面量,所以我建議你將字面量切換到單個撇號'
。此外,除非您期望根元素包含文本menu
,否則您需要更具體地瞭解要搜索的元素。例如,下面的XPath:
driver.findElement(By.xpath("//*[contains(text(), 'menu')]"));
會發現文本「菜單中的」 li
元素(注意XPath是區分大小寫):
<html>
<foo>
<bar>
<ul>
<li id="123">menu</li>
</ul>
</bar>
</foo>
</html>
如果可能的話,會更加肯定,例如如果你知道這是一個li
元素:
driver.findElement(By.xpath("//li[contains(text(), 'menu')]"));
編輯(OP把實際 HTML高達)
這將找到DIV
元素:
driver.findElement(By.xpath("//DIV[@style[contains(., 'menubar_menubutton.png')]]"));
注意xpath是區分大小寫的 - 所以你需要複製SHOUTCASE標籤。
我得到這個錯誤 org.openqa.selenium.NoSuchElementException:無法找到元素與xpath ==// * [包含(文本(),'menubutton')](警告:服務器沒有提供任何堆棧跟蹤信息)通過使用這兩種方法。 – 2014-10-28 03:13:31
@ayushibakshi您嘗試匹配的數據在'DIV'元素的樣式**屬性**中,即根本沒有'text()。更新 – StuartLC 2014-10-28 03:55:51
那麼我如何達到這個div元素?它沒有獨特的屬性來區分它。 – 2014-10-28 04:34:33
我覺得有一個更簡單的方法來做到這一點。
我個人只是做:
WebElement we = driver.findElement(By.Id("123"))
,或者如果你想利用CSS選擇器,你可以這樣做:
WebElement we = driver.findElement(By.cssSelector("li:nth-child(1)")) //baring you know the index of the list
'文本()'大概是在一個靜態方法Hamcrest匹配器的風格,如果你打算在不指定類的情況下使用它,則需要'import static'。 – chrylis 2014-10-27 08:56:49
我是新手。我在哪裏放置導入靜態子句。 – 2014-10-27 08:59:56
與進口。提供'text()'的庫的文檔應該有說明。 – chrylis 2014-10-27 09:01:55