2015-05-04 60 views

回答

1

在我看來,FluentLenium沒有Byxpath(By.id等),因爲它完全依賴於CssSelector。

既然你可以使用自定義過濾:

包含 containsWord notContains startsWith notStartsWith 的endsWith notEndsWith

我個人看不出有任何理由使用XPath。而且,XPath經常被認爲是定位網頁元素的「不良做法」。

+0

我試圖使用XPath的原因是我的應用程序太大,並不是所有的小部件(GWT)都有ID。但現在,我看到findById是最有效和最可靠的定位器。謝謝伊萬。 – AmineP90X

0

是的!在FluentLenium 3.4.0中,他們有@FindBy註釋,可以讓你通過xpath找到FluentWebElements。

import org.fluentlenium.adapter.junit.FluentTest; 
import org.fluentlenium.core.FluentPage; 
import org.fluentlenium.core.annotation.Page; 
import org.fluentlenium.core.annotation.PageUrl; 
import org.fluentlenium.core.domain.FluentWebElement; 
import org.junit.Test; 
import org.openqa.selenium.support.FindBy; 

@PageUrl("http://www.kennethkuhn.com/") 
class Simple extends FluentPage { 

    @FindBy(xpath = "/html/body/table/tbody[5]/tr/td[1]/center/a[1]/b/font") 
    FluentWebElement element; 

    public void enterMuseum(){ 
     element.click(); 
    } 
} 
public class test extends FluentTest { 
    @Page 
    Simple page; 
    @Test 
    public void testStuff(){ 
     goTo(page).enterMuseum(); 
    } 
} 

PS:有時存在XPath是非常有用的,例如當你在一堆類似的前端遺留應用程序,永遠不會改變(每個應用程序ID /名稱/類的所有不同)擔任但仍然需要測試,因爲後端的東西仍然可能會破壞修訂版本。雖然如果您測試的Web應用程序發生了一些變化,儘管很有可能您所有的xpath都會中斷,但將所有內容都固定在DOM ID上會更好。