2016-04-19 2 views
-7

Это HTML, который я хочу извлечь из.Xpath для извлечения части строки

<input type="hidden" id="continueTo" name="continueTo" value="/oauth2/authz/?response_type=code&client_id=localoauth20&redirect_uri=http%3A%2F%2Fbg-sip-activemq%3A8080%2Fjbpm-console%2Foauth20Callback&state=72a37ba7-2033-47f4-8e7e-69a207406dfb" /> 

мне нужно Xpath, чтобы извлечь только значение состояния 72a37ba7-2033-47f4-8e7e-69a207406dfb

т.е.
+0

Разместить свои усилия до сих пор (ваш текущий код/regex), чтобы мы могли помочь вам лучше. – dquijada

+1

Просто дружественный совет, вы можете прочитать эту страницу: [Руководство по заданию] (https://stackoverflow.com/help/how-to-ask), чтобы вы всегда могли быть уверены, что ваши вопросы могут быть легко подотчетны и максимально ясны. Обязательно включите все усилия, которые вы предприняли для устранения проблемы, с которой вы столкнулись, и что произошло при попытке этих исправлений. Также не забывайте свой код и любые сообщения об ошибках! –

+0

Возможно, вам также стоит взглянуть на [* XSLT: поиск последнего события в строке *] (http://stackoverflow.com/questions/3141847/xslt-finding-last-occurance-in-a-string). –

ответ

1

В XPATH:

//input[@id="continueTo"]/@value 

Он получит значение узла input с идентификатором continueTo. Затем его нужно будет обработать с помощью регулярного выражения, чтобы получить окончательный результат.

регулярное выражение:

`[^=]+$` 

$ означает конец строки. Он получит все на конце строки, которая не =.

2

Привет вы можете получить только значение атрибута с помощью XPath не его подстроки, но если вы хотите получить подстроку, пожалуйста, сделайте это, как показано ниже

String AttributeValue = driver.findElement(By.id("continueTo")).getAttribute("value"); 
System.out.println("Value of the attribute value is : " + AttributeValue); 

    // now as you want 72a37ba7-2033-47f4-8e7e-69a207406dfb this substring of the vale attribute 
    // then plz apply java split as below 
    String value = "/oauth2/authz/?response_type=code&client_id=localoauth20&redirect_uri=http%3A%2F%2Fbg-sip-activemq%3A8080%2Fjbpm-console%2Foauth20Callback&state=72a37ba7-2033-47f4-8e7e-69a207406dfb"; 
    String [] myValue = value.split("="); 
    System.out.println(myValue[0]); // will print /oauth2/authz/?response_type 
    System.out.println(myValue[1]); // will print code&client_id 
    System.out.println(myValue[2]); // will print localoauth20&redirect_uri 
    System.out.println(myValue[3]); // will print http%3A%2F%2Fbg-sip-activemq%3A8080%2Fjbpm-console%2Foauth20Callback&state 
    System.out.println(myValue[4]); // will print 72a37ba7-2033-47f4-8e7e-69a207406dfb 

Надеется, что это помогает вашему запросу

1

использования ниже коды: -

String val = driver.findElement(By.xpath("//input[@id='continueTo']/@value")).getText(); 

    String [] myValue = val.split("&state="); 

    System.out.println(myValue[1]); 

Надеется, что это поможет вам :)

Смежные вопросы