如果我使用此代码:
@FindBy(how = How.XPATH, using= ".//*[@class='leaflet-control-pan leaflet-control']")
private WebElement movingPageButtonsLocator;
找到了movingPageButtonsLocator元素,但是如果我使用以下代码则不会:
@FindBy(how = How.CLASS_NAME, using= "leaflet-control-pan leaflet-control")
private WebElement movingPageButtonsLocator;
Aren都是一样的吗?
如果没有,How.XPATH
在这种情况下与How.CLASS_NAME
的区别如何?
答案 0 :(得分:1)
@FindBy(how = How.XPATH, using= ".//*[@class='leaflet-control-pan leaflet-control']")
private WebElement movingPageButtonsLocator;
将匹配任何XPATH
查询,该查询可以是页面上的任何内容。其中className
是元素上的单个类,如果要匹配元素上的多个类,则需要使用@FindBys
。
根据JavaDoc,它应该是这样的:
@FindBys({@FindBy(how = How.CLASS_NAME, using= "leaflet-control-pan"),
@FindBy(how = How.CLASS_NAME, using= "leaflet-control") })
private WebElement movingPageButtonsLocator;
或更简洁:
@FindBys({@FindBy(className = "leaflet-control-pan"),
@FindBy(className = "leaflet-control") })
private WebElement movingPageButtonsLocator;
@FindBys
是合乎逻辑的AND
,它只能找到{{1>}上 class
的位置。 我认为应该将element
称为语义正确
用于标记页面对象上的字段以指示应该进行查找 如ByChained
中所述,在链中使用一系列@FindBy标记
@FindAll
是一个逻辑@FindByAll
,它找到任何指定条件与OR
匹配的位置。 我认为应该将element
称为语义正确
用于标记页面对象上的字段以指示应该进行查找 使用一系列@FindBy标签然后它将搜索所有元素 匹配任何FindBy标准。请注意,元素不是 保证按文件顺序排列。
答案 1 :(得分:1)
这可以使用CSS Selector
完成 @FindBy(how = How.CSS, using= ".leaflet-control-pan.leaflet-control")
答案 2 :(得分:0)
如果您仔细查看WITH
TABLE_1 AS
(SELECT 'ADVANCED' AS STRING_1, 'ANNA' AS STRING_2 FROM DUAL
UNION
SELECT 'MICROSOFT' AS STRING_1, 'MSS' AS STRING_2 FROM DUAL
UNION
SELECT 'MICROSOFT' AS STRING_1, 'MSOFT' AS STRING_2 FROM DUAL
UNION
SELECT 'MISS' AS STRING_1, 'MISS' AS STRING_2 FROM DUAL
)
SELECT
T1.*, REMSTR(STRING_2, STRING_1) AS RESULT
FROM
TABLE_1 T1
说班级名称而非班级名称。见单数与复数。
只有当单个类可以识别元素时,才应使用 How.CLASS_NAME 。
以下工作,不确定它是否会给你一个你感兴趣的元素。
how = How.CLASS_NAME