Как быстро пасить результат

  • Автор темы Автор темы biryukovm
  • Дата начала Дата начала

biryukovm

Client
Регистрация
19.05.2019
Сообщения
152
Реакции
10
Баллы
18
Всем привет.
Я использую шаблон кода

C#:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;
var des = driver.FindElementsByXPath("//*[@text=\"Display\"]");// Найти массив элементов по xPath
if (des == null)
    throw new Exception("Элементы не найдены");

var count = des.Length; // Количество найденных элементов.
for(int x=1; x<(count+1); x++){
    try {p1 = driver.FindElementByXPath("//*[@class=\"android.view.View\"]["+x+"]").GetAttribute("resource-id");} catch{}
    try {p1 = p1.Replace(" ","").Trim();} catch{}

}


Но при такой обработке затягивает процесс работы на 20 секунд и более хотя информации очень мало по сбору.

Есть что то аналогичное как в ZennoPoster
C#:
Развернуть Свернуть Копировать
try {lst_Find = ZennoPoster.Parser.ParseByXpath(source, "//div[contains(@class, 'item-cards')]" , "outerhtml" ).ToList();} catch{} // парсинг элементов
if (lst_Find.Count > 0){foreach(var l in lst_Find){
    count++;
    t1 = "";

    try {t1 = ZennoPoster.Parser.ParseByXpath(l, "/div[contains(@class, 'link')]" , "data-id" ).ToList().ElementAt(0).ToString().Trim();} catch{}
}}


PS. - Может нужно кеш в ZennoDroid подчищать?

В общем как можно этот процесс ускорить?
 
В качестве альтернативы я заметил что этот код работает но не подходит
К примеру
C#:
Развернуть Свернуть Копировать
try {lst_Find = ZennoPoster.Parser.ParseByXpath(source, "//div[contains(@class, 'item-cards')]" , "outerhtml" ).ToList()
.ElementAt(0).ToString().Trim()

;} catch{} // парсинг элементов

В XML нет параметра outerhtml что плохо.
Так бы можно было этот метод использовать
 
если очень грубо, то экономия времени не на парсинге, а на получении документа только один раз и уже локальном поиске по нему сколько угодно раз и любым удобным способом

C#:
Развернуть Свернуть Копировать
string layoutXml = ..droid.Hierarchy.GetLayout()
XmlDocument layoutDoc = new System.Xml.XmlDocument();

layoutDoc.LoadXml(layoutXml);
...
node = layoutDoc.DocumentElement.SelectSingleNode(xpath);
// node.SelectNodes(xpath); тут и к parent можно и sibling и много чему еще обращатся, у microsoft норм дока
...
node.Attributes["bounds"]?.Value
...
layoutDoc.DocumentElement.SelectNodes(xpath);

и т.д. и т.п.
Парсер для xpath можно для удобства и альтернативный или более высокой версии зацепить, если дройдовского не хватает.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)