我的问题是我无法弄清楚FluentLenium中的选择器XPath(selenium)的等价物。
谢谢。
答案 0 :(得分:1)
在我看来,FluentLenium没有By.xpath(By.id等),因为它只依赖于CssSelector。
由于您可以使用自定义过滤器:
包含 containsWord notContains 以。。开始 notStartsWith 以。。结束 notEndsWith
我个人认为没有理由使用XPath。此外,XPath通常被认为是一种不良做法"找到网页元素。
答案 1 :(得分:0)
YES!在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& c)应用程序),但仍然需要进行测试,因为后端的东西仍然可以破坏修订。虽然,如果您测试的网络应用程序发生了轻微的变化,尽管您的所有xpath都很有可能会中断,并且最好将所有内容都固定到DOM ID上。