Возникли проблемы, c#, веб-просмотр и invokescriptasyn c. Невозможно выполнить клик () по следующей ссылке - PullRequest
0 голосов
/ 02 марта 2020

Итак, я анализирую данные с веб-страницы. У меня есть, чтобы я мог автоматически войти на сайт. Однако мне нужно иметь возможность нажать кнопку «Далее» на странице. Однако следующей ссылке не присвоен идентификатор, поэтому единственный способ получить правильную ссылку - использовать Xpath. Приведенный ниже код отлично работает для заполнения полей.

string functionString = String.Format("document.getElementById('username').value = '{0}';", "usernamehere");
var result = string.Empty;
result = await webView1.InvokeScriptAsync("eval", new string[] { functionString });

Однако. это xpath, мне нужно найти кнопку «Далее».

"//a[contains(text(),'Next »')]"

Я хотел выполнить .Click() в конце, но я не могу заставить что-либо из этого работать. Я думал, что-то вроде этого, но он выдает и ошибку Hresult, поэтому должно быть что-то не так с синтаксисом?

String functionString = String.Format("document.evaluate(\"//a[contains(text(),'Next »')].Click();\"");
result = await webView1.InvokeScriptAsync("eval", new string[] { functionString });

HTML код со страницы

<span>
<a ng-class="{disabled: currentPage == pages_pagination.length-1}" href="" ng-click="nextPage(currentSearch)">Next »</a>
</span>

Есть идеи как я могу это сделать?

1 Ответ

0 голосов
/ 03 марта 2020

Используйте ниже. Вы должны пройти сброс параметров при использовании eval.

String functionString = String.Format("document.evaluate(\"//a[starts-with(text(),'Next')]\", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).click();")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...