Jump to content
Korean Random
Sign in to follow this  
noveek

Delphi chromium Eaccess violation

Recommended Posts

Получаю ошибку при попытке кликнуть программно на кнопку в открытой странице браузера

procedure Button1Click(Sender: TObject);
var
JSCode:String;
begin
JSCode := 'document.getElementsByName("Новая Тема").click'; // кнопка с title="Новая Тема" 
Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode,'about:blank',0); // Ошибка
end;
end.
Edited by noveek

Share this post


Link to post

Short link
Share on other sites

.click()

JSCode := 'document.getElementsByName("Новая Тема").click()';

Спасибо конечно всё равно не помогло =(

Edited by noveek

Share this post


Link to post

Short link
Share on other sites

кнопка с title="Новая Тема"

блин, getElementsByName("Новая Тема") вернет кнопку с name="Новая Тема"

для поиска по title используйте jquery

Share this post


Link to post

Short link
Share on other sites

блин, getElementsByName("Новая Тема") вернет кнопку с name="Новая Тема"

для поиска по title используйте jquery

document.getElementById ? Это и есть Jquery ?

А главное java компилятор ругается на скобки в конце .click

JavaScript error: Uncaught TypeError: document.querySelectorAll(...).click is not a function on line 2

Edited by noveek

Share this post


Link to post

Short link
Share on other sites

@noveek, getElementsByName вернет массив, поэтому бери его первый элемент, у которого будет метод click()

JSCode := 'document.getElementsByName("Новая Тема")[0].click()';
Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

@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 by noveek

Share this post


Link to post

Short link
Share on other sites

@noveek, добавь туда name="Новая Тема"

Куда ? .click("Новая Тема")'; это имеешь ввиду ?

Edited by noveek

Share this post


Link to post

Short link
Share on other sites

 

@noveek, Пользуйтесь документацией..

В примере видно, что для работы getElementsByName элементы должны иметь аттрибут name.

<a name="Новая тема"></a>

Кнопку то как кликнуть в Delphi ? код кнопки указал выше сайт не мой если вы об этом !

Edited by noveek

Share this post


Link to post

Short link
Share on other sites

@noveek, Воспользуйтесь element.getAttribute("title").

Это вернёт значение аттрибута title для элемента. Конечно, нужно будет вначале перебрать все элементы, проверить есть ли у них этот аттрибут, и равен ли он "Новая Тема".

Edited by Azbuka

Share this post


Link to post

Short link
Share on other sites

 

 

$("[title=Новая тема]")

Из пушки  по воробьям. jQuery делает то же самое, но при этом ещё тратит время на инициализацию и разбор выражения.

Если можно использовать jQuery, это вовсе не значит, что её нужно использовать.

Share this post


Link to post

Short link
Share on other sites

@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(); // Кликаем
}

Share this post


Link to post

Short link
Share on other sites
$("[title=Новая тема]").click()

Это что за синтаксис Дельфи ?

Share this post


Link to post

Short link
Share on other sites

 

 

Это что за синтаксис Дельфи ?

Это не Дельфи, это JavaScript. Для работы этого кода нужна jQuery.

Share this post


Link to post

Short link
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...