Выполнить js.

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Нужно через js разблокировать кнопку.
Кнопка имеет вид

Код:
<button disabled="" type="submit" id="recaptcha-submit" class="m-t-16px pure-button puree-button-blue puree-spinner-button">Continue</button>
Поэтому не кликабельна.
Я нашел код который ее разблокирует.

Код:
    var submitButton = document.getElementById('recaptcha-submit');
            submitButton.disabled = true;
Но проблема в том что сама форма находится во фрейме. И поэтому если я выполняю этот js на нужной странице то он не работает , если на странице фрейма то все ок.

Также нарыл код
Код:
var submitButton   = document.querySelector("#captcha-submit");
   
               
                        submitButton.disabled = false;
Который работает в хроме но не работает в фф.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 856
Баллы
113
Проще всего через c# такое сделать: найти нужный HtmlElement с помощью XPath/FindElementById, а потом выполнить метод RemoveAttribute - поищи в топике про рекапчагнайзер, я там парой страниц ранее выкладывал код
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Нужно через js разблокировать кнопку.
Кнопка имеет вид

Код:
<button disabled="" type="submit" id="recaptcha-submit" class="m-t-16px pure-button puree-button-blue puree-spinner-button">Continue</button>
не проще через конструктор установить значение "true" в button disabled=""
 
  • Спасибо
Реакции: one

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 598
Баллы
113

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 598
Баллы
113

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Проще всего через c# такое сделать: найти нужный HtmlElement с помощью XPath/FindElementById, а потом выполнить метод RemoveAttribute - поищи в топике про рекапчагнайзер, я там парой страниц ранее выкладывал код

Код:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.MainDocument.FindElementByXPath("//*[@id=\"recaptcha-submit\"]", 0);
he.RemoveAttribute("disabled");
тоже не работает )
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 856
Баллы
113
Код:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.MainDocument.FindElementByXPath("//*[@id=\"recaptcha-submit\"]", 0);
he.RemoveAttribute("disabled");
тоже не работает )
Уверен, что нужный тег находит? Мб там их несколько и он находит первый, а тебе нужен второй. Т.к. этот код будет работать если даже рекапча в ифрейме ифрейма основного окна (js в зенке не будет).
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Уверен, что нужный тег находит? Мб там их несколько и он находит первый, а тебе нужен второй. Т.к. этот код будет работать если даже рекапча в ифрейме ифрейма основного окна (js в зенке не будет).
А как проверить?
 

Sz5

Client
Регистрация
10.12.2012
Сообщения
157
Благодарностей
186
Баллы
43
А как проверить?
Переделать HtmlElement в HtmlElementCollection, далее вызвать свойство Count по этой коллекции с текущим xpath если количество вернет > 1 то для работы с элементом надо будет обращаться к нему через индекс или переписать xpath

Как-то так
Код:
Tab tab = instance.ActiveTab;
HtmlElementCollection heCollection = tab.MainDocument.FindElementsByXPath("//*[@id=\"recaptcha-submit\"]");
return heCollection.Count;
 
  • Спасибо
Реакции: AloneSlamer

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Переделать HtmlElement в HtmlElementCollection, далее вызвать свойство Count по этой коллекции с текущим xpath если количество вернет > 1 то для работы с элементом надо будет обращаться к нему через индекс или переписать xpath

Как-то так
Код:
Tab tab = instance.ActiveTab;
HtmlElementCollection heCollection = tab.MainDocument.FindElementsByXPath("//*[@id=\"recaptcha-submit\"]");
return heCollection.Count;
0
значит все таки как я и думал xpath кривой
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 598
Баллы
113
зачем вообще через xpath искать что-либо, если единственная зацепка это айди?
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

зачем вообще через xpath искать что-либо, если единственная зацепка это айди?
может потому что getElementById не работает с фреймом?
я же выше писал если на самой странице то оно работает, а если эта страница в фрейме то не работает.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
может потому что getElementById не работает с фреймом?
я же выше писал если на самой странице то оно работает, а если эта страница в фрейме то не работает.
№ документа и № формы поставь -1 (минус один)
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 598
Баллы
113

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 598
Баллы
113

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 856
Баллы
113
А разве там не одинаково оно работает?
Работает по-разному. Выполнение JS на ифрейме ифрейма страницы - не выйдет. А вот с C# - заработает.

PS: в C# для получения элемента по id - другой метод, не тот, что ты выше написал
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Работает по-разному. Выполнение JS на ифрейме ифрейма страницы - не выйдет. А вот с C# - заработает.

PS: в C# для получения элемента по id - другой метод, не тот, что ты выше написал
А какой?
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
117
Баллы
43
Посмотри, попробуй

https://developer.mozilla.org/en-US/docs/Web/API/Window/frameElement

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Код:
//Sending messages to iframe from parent window

var iframe = document.querySelector('iframe');

function test() {
iframe.contentWindow.postMessage('test', '*');
}
примерно подобное выглядело както типо

Ну или простыми словами
http://blog.teamtreehouse.com/cross-domain-messaging-with-postmessage

наврено в эту сторону курить, но сам никогда не нуждался в подобном, не ручаюсь за выше сказанное
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 856
Баллы
113

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 856
Баллы
113
Правильный вариант для этого конкретного примера (т.к. там кнопка не в MainDocument)

Код:
HtmlElement he = instance.MainTab.FindElementById("recaptcha-submit");
he.RemoveAttribute("disabled");
PS: в 5.9.9.1 не работает, в 5.10.5.1 - работает 100%
 
Последнее редактирование:

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