Смазать обезьяну xpath и Firebug - PullRequest
0 голосов
/ 17 апреля 2011

сценарий:

Из firebug xpath кнопка выглядит следующим образом:

.//*[@id='ctl00_mainContentPlaceholder_Button3']

и фрагмент сценария:

<br>
    <input name="ctl00$mainContentPlaceholder$Button3" 
           value="Back To Auctions" 
           onclick="closePopup(); return false;"
           id="ctl00_mainContentPlaceholder_Button3" 
           class="simplemodal-close" 
           style="width:160px;" 
           type="submit">
<br>

Мой скрипт GM выглядит следующим образом:

// @include *
// @version     0.1
// @description Automatically click // ==/UserScript==

click_popupBtn1 = function() {

    var joinBtn=document.evaluate(
                  '//*[@id, "ctl00_mainContentPlaceholder_Button3"]',
                  document,
                  null,
                  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
                  null).singleNodeValue.click();
alert(joinBtn);
    if(!joinBtn) return false;
    joinBtn.click();
    return true;
}

click_popupBtn1 ();

Я обнаружил этот аукционный сайт, который я хочу автоматизировать с помощью GM. Есть два снимка экрана. www.mediafire.com/?lwy7agybtfn2x. Первый снимок экрана - основной обзор сайта с кнопками назначения ставок. Второй обзор, всплывающее окно выигрышей.

Что мне нужно сделать: сначала мне нужна помощь, чтобы избавиться от всплывающего окна. Если это там, я не могу делать ставки. Я использовал аналогичный скрипт для страницы входа в систему и сумел заставить GM автоматически войти в систему, потому что сервер требует, чтобы вы входили в систему каждые три часа или около того. Смотрите вышеупомянутые скрипты и xpath. Я пробовал, но мой кусок скрипта gm не нажимает на него.

Тогда проект: я хотел бы сделать это сам, но мне нужны некоторые указатели. в прикрепленном txt-файле auction1.txt я скопировал некоторые файлы консоли Firebug, которые выглядят так:

GET http://www.xxx.xxx/REST_Service/REST_Auction.svc/GetAuctionData?_=1303059143094 
200 OK
29.62s   firebu...rver.js (line 169)
<System>
ParamsHeadersResponse {"d":[["","","y","ZAR","1","33713","8887, 8887, 8887, 8887, 8887",null,"1.26","8887","0:13:30","","12","","C","29",null],["","","y","ZAR","2","34029","",null,"0.76","NONE","0:10:37","","5","","L",null,null],["","","y","ZAR","3","30332","3616, 9390, 9841, 8664, 4901",null,"379.80","3616","0:01:09","","1100","","T",null,null],["","","y","ZAR","4","33987","3616, 9168, 0605, 9168, 8771",null,"1.26","3616","0:00:51","","12","","T",null,null],["","","y","ZAR","5","34030","",null,"0.76","NONE","0:12:28","","5","","L",null,null],["y","-00:00","y","ZAR","6","34028","1137, 1137, 1137, 1137",null,"2.64","1137","0:20:05","","12","","L","12","vkSaGLYmZD+vgphl90foiM+3QXDf0c7SRfpMnt9PSDw="],["","","y","ZAR","7","33938","3616, 3616",null,"5.60","3616","0:01:50","","55","","T",null,null],["","","y","ZAR","8","33729","3616, 6197, 3616, 6197, 9134",null,"3.34","3616","0:01:26","","29","","T",null,null],["","","y","ZAR","9","33867","1551, 7243",null,"1.73","1551","0:02:40","","10","","B",null,null],["","","y","ZAR","10","33293","1551, 7243, 7243, 7243, 7243",null,"3.43","1551","0:06:10","","10","","B",null,null],["","","y","ZAR","11","33174","7243, 4901, 3614, 0481, 0481",null,"3.71","7243","0:06:10","","10","","B",null,null]]}
GET http://www.xxx.xxx/REST_Service/REST_Auction.svc/GetAuctionData?_=1303059144766

Оттуда я могу видеть всю информацию, которая мне нужна, и она обновляется каждую секунду, поэтому для того, чтобы я сказал сценарию GM делать ставки на какую кнопку, мне нужно передать эту информацию в сценарий для обработки. У кого-нибудь есть идеи?

Я думал о том, чтобы написать небольшой сценарий для каждого из 12 небольших аукционов, каждый из которых обрабатывал свою собственную часть, собирая свою собственную информацию. Я думал, что эти ответы от Firebug могут быть полезным и более прямым способом получения информации, чтобы пойти и вычесть их одно за другим из окон, которые впоследствии обновляются.

1 Ответ

1 голос
/ 02 июля 2011

Не приглядываясь к коду и не читая более внимательно весь пост, эта строка выскакивает у меня: '//*[@id, "ctl00_mainContentPlaceholder_Button3"]'

Я не уверен на 100%, но считаю, что это должно быть: '//*[@id="ctl00_mainContentPlaceholder_Button3"]'

Я настоятельно рекомендую использовать Firefinder для Firebug , чтобы помочь с созданием путей XPath:]

Во-вторых, взгляните на Сеть разработчиков Mozilla для генерации событий кликов (iirc, joinBtn.click(); не будет работать в скрипте Greasemonkey).

...