2010-08-02 62 views
1

我有問題跑比賽XPATH方法:我使用的FF3.6硒XPATH匹配方法

@Test(groups = "regression") 
@Parameters({ "baseUri", "locale" }) 
public void testShopping(String baseUri, String locale) throws Exception{ 
    session().allowNativeXpath("false"); 
    String shoppingLink = session().getAttribute("//div[@id='footernav_links']//a[matches(@href,'.*shopping.*')]/@href"); 
    LOGGER.info(shoppingLink); 
} 

拋出異常

1:25.871 INFO - Command request: getAttribute[//div[@id='footernav_links']//a[matches(@href,'.*shopping.*')]/@href, ] on session 057af825ff224b16877a61b97b974b72 13:31:25.912 INFO - Got result: ERROR: Element //div[@id='footernav_links']//a[matches(@href,'.*shopping.*')]/ not found on session 057af825ff224b16877a61b97b974b72 13:3

,並得到了動機從文章驗證碼

how-to-use-regex-in-selenium-locators

回答

1

你可以使用contains如下:

xpath=id('footernav_links')//a[contains(@href, '/shopping/')]@href 

此外,/最終@之前不應該是必要的,並且如上圖所示,你可以簡化//div[@id='footernav_links']id('footernav_links')。請注意,如果你這樣做,你將需要xpath=前綴。


或者,您可以使用CSS定位:

css=#footernav_links a[href*=/shopping/]@href 
+0

謝謝......這句法更緊湊,我可以重新使用直通線substituion表達過。保存了一些代碼行:-) – 2010-08-11 14:33:34

1

得到它的工作。我現在用下面的語法

session().allowNativeXpath("false"); 
String shoppingLink = session().getAttribute(
    "//div[@id='footernav_links']//a[matches(@href,'/shopping/')]/@href"); 
LOGGER.info(shoppingLink); 

我正在尋找鏈接的形式
http://mysite.com/wcs/shopping/overview?cc=gb&lc=en
我不知道這是否是完全正確的,雖然。