noveek Posted February 14, 2016 Share 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 Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 15, 2016 Share Posted February 15, 2016 .click.click() 2 @ Quote Link to comment Short link Share on other sites More sharing options...
noveek Posted February 15, 2016 Author Share Posted February 15, 2016 (edited) .click() JSCode := 'document.getElementsByName("Новая Тема").click()'; Спасибо конечно всё равно не помогло =( Edited February 15, 2016 by noveek @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 15, 2016 Share Posted February 15, 2016 кнопка с title="Новая Тема"блин, getElementsByName("Новая Тема") вернет кнопку с name="Новая Тема" для поиска по title используйте jquery @ Quote Link to comment Short link Share on other sites More sharing options...
noveek Posted February 15, 2016 Author Share 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 Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 15, 2016 Share Posted February 15, 2016 (edited) @noveek, getElementsByName вернет массив, поэтому бери его первый элемент, у которого будет метод click() JSCode := 'document.getElementsByName("Новая Тема")[0].click()'; Edited February 15, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
noveek Posted February 15, 2016 Author Share 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 Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 15, 2016 Share Posted February 15, 2016 @noveek, добавь туда name="Новая Тема" @ Quote Link to comment Short link Share on other sites More sharing options...
noveek Posted February 15, 2016 Author Share Posted February 15, 2016 (edited) @noveek, добавь туда name="Новая Тема" Куда ? .click("Новая Тема")'; это имеешь ввиду ? Edited February 15, 2016 by noveek @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted February 15, 2016 Share Posted February 15, 2016 @noveek, Пользуйтесь документацией.. В примере видно, что для работы getElementsByName элементы должны иметь аттрибут name. <a name="Новая тема"></a> @ Quote Link to comment Short link Share on other sites More sharing options...
noveek Posted February 15, 2016 Author Share Posted February 15, 2016 (edited) @noveek, Пользуйтесь документацией.. В примере видно, что для работы getElementsByName элементы должны иметь аттрибут name. <a name="Новая тема"></a> Кнопку то как кликнуть в Delphi ? код кнопки указал выше сайт не мой если вы об этом ! Edited February 15, 2016 by noveek @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted February 15, 2016 Share Posted February 15, 2016 (edited) @noveek, Воспользуйтесь element.getAttribute("title"). Это вернёт значение аттрибута title для элемента. Конечно, нужно будет вначале перебрать все элементы, проверить есть ли у них этот аттрибут, и равен ли он "Новая Тема". Edited February 15, 2016 by Azbuka @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 15, 2016 Share Posted February 15, 2016 (edited) Воспользуйтесь $(title='Новая тема').click() Edited March 2, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted February 15, 2016 Share Posted February 15, 2016 $("[title=Новая тема]") Из пушки по воробьям. jQuery делает то же самое, но при этом ещё тратит время на инициализацию и разбор выражения. Если можно использовать jQuery, это вовсе не значит, что её нужно использовать. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 15, 2016 Share Posted February 15, 2016 Если можно использовать jQuery, это вовсе не значит, что её нужно использовать. http://www.koreanrandom.com/forum/topic/21328-/?p=304076 @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted February 15, 2016 Share 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 Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 15, 2016 Share Posted February 15, 2016 Кликаеми ломаем цикл @ Quote Link to comment Short link Share on other sites More sharing options...
noveek Posted February 16, 2016 Author Share Posted February 16, 2016 $("[title=Новая тема]").click() Это что за синтаксис Дельфи ? @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted February 16, 2016 Share Posted February 16, 2016 Это что за синтаксис Дельфи ? Это не Дельфи, это JavaScript. Для работы этого кода нужна jQuery. @ Quote Link to comment Short link Share on other sites More sharing options...
norkas Posted March 2, 2016 Share Posted March 2, 2016 и ломаем цикл До цикла не дойдёт @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.