FluentLenium 中 "XPath" (Selenium) 中的选择器相当于什么
What's the equivalent of the selector in "XPath" (Selenium) in FluentLenium
我的问题是我无法找出 FluentLenium 中选择器 XPath(selenium) 的等价物。
谢谢。
在我看来,FluentLenium 没有 By.xpath(By.id 等)等价物,因为它完全依赖于 CssSelector。
因为您可以使用自定义过滤器:
contains
containsWord
notContains
startsWith
notStartsWith
endsWith
notEndsWith
我个人认为没有任何理由使用 XPath。此外,XPath 通常被视为 "bad practice" 来定位 web 元素。
是的!在 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/name/class 都是每个应用程序不同)但仍然需要测试,因为后端的东西仍然可以在修改时破坏东西。虽然,如果您正在测试的 Web 应用程序发生轻微变化,但您的所有 xpath 很有可能会中断,并且将所有内容都锚定到 DOM ID 绝对更好。
我的问题是我无法找出 FluentLenium 中选择器 XPath(selenium) 的等价物。
谢谢。
在我看来,FluentLenium 没有 By.xpath(By.id 等)等价物,因为它完全依赖于 CssSelector。
因为您可以使用自定义过滤器:
contains containsWord notContains startsWith notStartsWith endsWith notEndsWith
我个人认为没有任何理由使用 XPath。此外,XPath 通常被视为 "bad practice" 来定位 web 元素。
是的!在 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/name/class 都是每个应用程序不同)但仍然需要测试,因为后端的东西仍然可以在修改时破坏东西。虽然,如果您正在测试的 Web 应用程序发生轻微变化,但您的所有 xpath 很有可能会中断,并且将所有内容都锚定到 DOM ID 绝对更好。