noveek 27 Posted February 14, 2016 (edited) Получаю ошибку при попытке кликнуть программно на кнопку в открытой странице браузера procedure Button1Click(Sender: TObject); var JSCode:String; begin JSCode := 'document.getElementsByName("Новая Тема").click'; // кнопка с title="Новая Тема" Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode,'about:blank',0); // Ошибка end; end. Edited February 14, 2016 by noveek Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #313687 Posted February 15, 2016 .click.click() 2 Quote Share this post Link to post Short link Share on other sites
noveek 27 #313698 Posted February 15, 2016 (edited) .click() JSCode := 'document.getElementsByName("Новая Тема").click()'; Спасибо конечно всё равно не помогло =( Edited February 15, 2016 by noveek Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #313710 Posted February 15, 2016 кнопка с title="Новая Тема"блин, getElementsByName("Новая Тема") вернет кнопку с name="Новая Тема" для поиска по title используйте jquery Quote Share this post Link to post Short link Share on other sites
noveek 27 #313715 Posted February 15, 2016 (edited) блин, getElementsByName("Новая Тема") вернет кнопку с name="Новая Тема" для поиска по title используйте jquery document.getElementById ? Это и есть Jquery ? А главное java компилятор ругается на скобки в конце .click JavaScript error: Uncaught TypeError: document.querySelectorAll(...).click is not a function on line 2 Edited February 15, 2016 by noveek Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #313719 Posted February 15, 2016 (edited) @noveek, getElementsByName вернет массив, поэтому бери его первый элемент, у которого будет метод click() JSCode := 'document.getElementsByName("Новая Тема")[0].click()'; Edited February 15, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
noveek 27 #313721 Posted February 15, 2016 (edited) @noveek, getElementsByName вернет массив, поэтому бери его первый элемент, у которого будет метод click() JSCode := 'document.getElementsByName("Новая Тема")[0].click()'; Всё равно EAccess Violation.. Вот код кнопки: <a data-bind=" css: modificators, click: onButtonClicked, buttonWaiting: waiting, attr: {title: hint, href: link}, event: { mouseover: _.bind(onMouseOver, $component), mouseout: _.bind(onMouseOut, $component) }, style: { visibility: visible() ? '' : 'hidden' } " class="button button__inline" title="Новая Тема"> Edited February 15, 2016 by noveek Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #313726 Posted February 15, 2016 @noveek, добавь туда name="Новая Тема" Quote Share this post Link to post Short link Share on other sites
noveek 27 #313730 Posted February 15, 2016 (edited) @noveek, добавь туда name="Новая Тема" Куда ? .click("Новая Тема")'; это имеешь ввиду ? Edited February 15, 2016 by noveek Quote Share this post Link to post Short link Share on other sites
Azbuka 278 #313783 Posted February 15, 2016 @noveek, Пользуйтесь документацией.. В примере видно, что для работы getElementsByName элементы должны иметь аттрибут name. <a name="Новая тема"></a> Quote Share this post Link to post Short link Share on other sites
noveek 27 #313799 Posted February 15, 2016 (edited) @noveek, Пользуйтесь документацией.. В примере видно, что для работы getElementsByName элементы должны иметь аттрибут name. <a name="Новая тема"></a> Кнопку то как кликнуть в Delphi ? код кнопки указал выше сайт не мой если вы об этом ! Edited February 15, 2016 by noveek Quote Share this post Link to post Short link Share on other sites
Azbuka 278 #313808 Posted February 15, 2016 (edited) @noveek, Воспользуйтесь element.getAttribute("title"). Это вернёт значение аттрибута title для элемента. Конечно, нужно будет вначале перебрать все элементы, проверить есть ли у них этот аттрибут, и равен ли он "Новая Тема". Edited February 15, 2016 by Azbuka Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #313813 Posted February 15, 2016 (edited) Воспользуйтесь $(title='Новая тема').click() Edited March 2, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
Azbuka 278 #313818 Posted February 15, 2016 $("[title=Новая тема]") Из пушки по воробьям. jQuery делает то же самое, но при этом ещё тратит время на инициализацию и разбор выражения. Если можно использовать jQuery, это вовсе не значит, что её нужно использовать. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #313821 Posted February 15, 2016 Если можно использовать jQuery, это вовсе не значит, что её нужно использовать. http://www.koreanrandom.com/forum/topic/21328-/?p=304076 Quote Share this post Link to post Short link Share on other sites
Azbuka 278 #313827 Posted February 15, 2016 @noveek, Я не проверял, но должно работать. var links = document.getElementsByTagName("a"); // Только ссылки var buttons = links.getElementsByClassName("button"); // Только ссылки с классом button for( var counter = 0; counter <= buttons.length; counter++) { if(buttons[counter].getAttribute("title") == "Новая тема") // Если аттрибут title кнопки равен "Новая тема" buttons[counter].click(); // Кликаем } Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #313830 Posted February 15, 2016 Кликаеми ломаем цикл Quote Share this post Link to post Short link Share on other sites
noveek 27 #313930 Posted February 16, 2016 $("[title=Новая тема]").click() Это что за синтаксис Дельфи ? Quote Share this post Link to post Short link Share on other sites
Azbuka 278 #313982 Posted February 16, 2016 Это что за синтаксис Дельфи ? Это не Дельфи, это JavaScript. Для работы этого кода нужна jQuery. Quote Share this post Link to post Short link Share on other sites
norkas 28 #315782 Posted March 2, 2016 и ломаем цикл До цикла не дойдёт Quote Share this post Link to post Short link Share on other sites