#watin #web-scraping #selectlist #google-ads-api
#watin #соскабливание полотна #список выбора #google-ads-api #нажмите #очистка веб-страниц
Вопрос:
Я перепробовал все, но безуспешно. Я использую Watin и C # .NET
То, что я делаю, собирается:
https ://adwords.google.com/o/Targeting/Explorer?__u=1000000000amp;__c=1000000000amp;ideaRequestType=KEYWORD_IDEAS#search.none
Примечание: Между https
и ://
нет пробела, но мне пришлось добавить его из-за проблемы с уценкой
Ввод капчи вручную (ввод текста из Watin).
После поиска по ключевым словам вы увидите, что внизу страницы у вас есть кнопки «Следующий» и «Предыдущий«.
Я хотел бы из WatiN перейти на страницу 2, 3,…
Звучит просто, нажмите на div
(с идентификатором gwt-debug-aw-paging-next
), и он перейдет на следующую страницу, но этого не происходит.
Я перепробовал FireEvent
, click
, KeyDown
, все … но это не работает.
Я также попытался выбрать 100 результатов из Selectlist
, но опять же, это не сработало.
Я пробовал это всеми способами:
browser.DomContainer.SelectList("gwt-debug-aw-paging-list-box").Option("100").Select();
Кажется, что ничего не работает, когда речь идет о кнопках в правом нижнем углу страницы.
Мне удалось «имитировать» клик по общим или точным результатам, но не с нижними кнопками.
Есть какие-нибудь предложения?
Правка 1:
я загрузил изображение, чтобы вы могли видеть именно ту кнопку, о которой я говорю:
Нажмите здесь, чтобы увеличить изображение.
<div id="gwt-debug-aw-paging-next" class="goog-button-base goog-inline-block goog-button aw-btn aw-pagination-button" tabindex="0" title="Next page">
<input type="text" tabindex="-1" style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;">
<div class="goog-button-base-outer-box goog-inline-block">
<div class="goog-button-base-inner-box goog-inline-block">
<div class="goog-button-base-pos">
<div class="goog-button-base-top-shadow">amp;nbsp;</div>
<div class="goog-button-base-content">
<span id="gwt-debug-aw-paging-next-content" class="aw-pagination-next">amp;nbsp;</span>
</div>
</div>
</div>
</div>
Ответ №1:
Пожалуйста, вставьте разметку элемента, на который вы хотели бы щелкнуть, включая один или два родительских элемента.
Это поможет предложить решения.
Спасибо.
Значит, следующее не работает?
using(IE ie = new IE("your-page's-url"))
{
// ... any steps needed to bring up the page in question ...
ie.Element("gwt-debug-aw-paging-next").Click();
}
Если нет, возможно, попробуйте щелкнуть по промежутку gwt-debug-aw-paging-next-content.
Комментарии:
1. Я попытался щелкнуть по промежутку, попытался щелкнуть по div. Пробовал Click, пробовал fireEvent, пробовал Focus KeyboardDown… все. Все еще нужна помощь с этим: (
2. Я провел больше тестов, и кажется, что в Watin я не получаю весь HTML-код целиком. Когда я захожу из браузера (Firefox с firebug) Я получаю <тип ввода=»текст»> сразу после первого DIV. Но когда я делаю это из Watin, я не вижу этого элемента. Я попытался просмотреть HTML и из Watin, у меня есть 3 div с одинаковым идентификатором, но в Firefox у меня этого нет. В чем может быть проблема??
Ответ №2:
Мне удалось решить эту проблему. Другой программист дал мне этот совет, так что кредиты достаются ему.
Идея в том, что в Google adwords есть больше диапазонов с одинаковым идентификатором (странно, я знаю), поэтому нам нужно щелкнуть по каждому диапазону, а не только по первому.
Вот окончательный код, который необходимо добавить:
var pagination = browser.Spans.Where(e =>
e.IdOrName == "gwt-debug-aw-paging-next-content").ToList();
foreach (var item in pagination)
item.Click();