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

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 подчищать?

В общем как можно этот процесс ускорить?
 

biryukovm

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

;} catch{} // парсинг элементов
В XML нет параметра outerhtml что плохо.
Так бы можно было этот метод использовать
 

MaxTraff

Client
Регистрация
16.06.2024
Сообщения
61
Благодарностей
27
Баллы
18
если очень грубо, то экономия времени не на парсинге, а на получении документа только один раз и уже локальном поиске по нему сколько угодно раз и любым удобным способом

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 можно для удобства и альтернативный или более высокой версии зацепить, если дройдовского не хватает.
 

MaxTraff

Client
Регистрация
16.06.2024
Сообщения
61
Благодарностей
27
Баллы
18

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