2016-11-04 7 views
-1

Мне нужно значение Xpath из Iwebelement. Кто-нибудь может мне помочь? PFB кодИзвлечь значение Xpath из IwebElement

IWebElement webElement; 
if (!string.IsNullOrEmpty(webElement.GetAttribute("id"))) 
      { 
       searchprop.Add("Id", webElement.GetAttribute("id")); 
      } 

     if (!string.IsNullOrEmpty(webElement.GetAttribute("XPath"))) 
     { 
      searchprop.Add("XPath", webElement.GetAttribute("XPath")); 
     } 

Здесь, очевидно, что я не могу получить значение Xpath с помощью «webElement.GetAttribute (» XPath «)» Так как Xpath не является attribute.Similar к значению ID мне нужно Xpath а также. Так как я могу это получить?

+0

Вам необходимо предоставить или создать локатор xpath ... Или получить его с помощью инструментов разработчика браузера. – Grasshopper

+0

Зачем вам XPath для элемента, который вы уже нашли? – JeffC

+0

Я на самом деле выбираю элемент управления из веб-браузера, который должен предоставить мне всю информацию управления (ID, ClassName, Xpath). Эта информация i будет размещаться в приложении. Когда пользователь выбирает какой-либо элемент управления из моего приложения, я должен иметь возможность выделить выделенный элемент управления в браузере с помощью Xpath/ID/ClassName. –

ответ

0

Возможно, этот метод решит вашу проблему.

public String GetElementXPath(IWebDriver driver, IWebElement element) 
{ 
    String javaScript = "function getElementXPath(elt){" + 
          "var path = \"\";" + 
          "for (; elt && elt.nodeType == 1; elt = elt.parentNode){" + 
           "idx = getElementIdx(elt);" + 
           "xname = elt.tagName;" + 
           "if (idx > 1){" + 
            "xname += \"[\" + idx + \"]\";" + 
           "}" + 
           "path = \"/\" + xname + path;" + 
          "}" + 
          "return path;" + 
         "}" + 
         "function getElementIdx(elt){" + 
          "var count = 1;" + 
          "for (var sib = elt.previousSibling; sib ; sib = sib.previousSibling){" + 
           "if(sib.nodeType == 1 && sib.tagName == elt.tagName){" + 
            "count++;" + 
           "}" + 
          "}" + 
          "return count;" + 
         "}" + 
         "return getElementXPath(arguments[0]).toLowerCase();"; 
    return (String)((IJavaScriptExecutor)driver).ExecuteScript(javaScript, element); 
} 
Смежные вопросы