$input->click_by_attribute кликает по невидимому полю

Если вы обнаружили какие либо ошибки, недочеты и неудобства или другие незачеты в программе напишите нам об этом на этом форуме - мы бум исправлять
Ответить
SnoopDog
Сообщения: 57
Зарегистрирован: 22 окт 2009, 01:21

$input->click_by_attribute кликает по невидимому полю

Сообщение SnoopDog » 17 дек 2009, 19:11

Не знаю, насколько это ошибка. Хотел использовать эту функцию для проверки видимости поля ввода, но каким-то образом она умудряется кликнуть по полю в скрытом слое.

Аватара пользователя
igvard
Site Admin
Сообщения: 241
Зарегистрирован: 31 июл 2008, 22:53

Сообщение igvard » 17 дек 2009, 20:48

Не могли бы вы выложить здесь или прислать на мыло support@humanemulator.info пример скрипта с кодом, где это происходит.

SnoopDog
Сообщения: 57
Зарегистрирован: 22 окт 2009, 01:21

Сообщение SnoopDog » 17 дек 2009, 23:07

HTML

Код: Выделить всё

<html><body>

<div style="display: none; ">
	<input type="text" name="testfield" />
</div>

</body></html>
XHE

Код: Выделить всё

// navigate to google
$browser->navigate("http://test/");
// wait on browser
$browser->wait(1);

$clicked = $input->click_by_attribute('name', 'testfield', true);
echo 'is clicked: ' . $clicked;
echo выдает is_clicked: 1

Аватара пользователя
igvard
Site Admin
Сообщения: 241
Зарегистрирован: 31 июл 2008, 22:53

Сообщение igvard » 18 дек 2009, 17:01

Это не ошибка, так и должно быть. Элемент существует на странице, а значит по нему можно кликнуть, а видимый он или нет это не важно :)

SnoopDog
Сообщения: 57
Зарегистрирован: 22 окт 2009, 01:21

Сообщение SnoopDog » 18 дек 2009, 18:00

Но это не очень похоже на эмуляцию человека. Человек-то это поле не видит..

Как можно определить видимость элемента? (Кажется, писал уже где-то..)

Аватара пользователя
igvard
Site Admin
Сообщения: 241
Зарегистрирован: 31 июл 2008, 22:53

Сообщение igvard » 18 дек 2009, 19:56

можно поробывать получить атрибут дива style по его номеру через функцию $element->get_element_attribute_by_number($number,$attribute);

А номер дива определить как номер input элемента -1.

oneer
Сообщения: 53
Зарегистрирован: 15 июн 2009, 21:53

Сообщение oneer » 18 дек 2009, 19:56

Ага, такой объект эксплорера. Хотя теоретически можно получить видимость объекта через dom модель, проверив его свойство visible

Аватара пользователя
igvard
Site Admin
Сообщения: 241
Зарегистрирован: 31 июл 2008, 22:53

Сообщение igvard » 18 дек 2009, 20:00

oneer писал(а):Ага, такой объект эксплорера. Хотя теоретически можно получить видимость объекта через dom модель, проверив его свойство visible
Можно попробывать и так, но есть вариант, что если атрбут не определён у элемента, то вы получить его не сможете. В данном примере элемент скрывается не через visible, а через div. Но попробывать можно...

oneer
Сообщения: 53
Зарегистрирован: 15 июн 2009, 21:53

Сообщение oneer » 18 дек 2009, 21:13

igvard писал(а): Можно попробывать и так, но есть вариант, что если атрбут не определён у элемента, то вы получить его не сможете.
Хм, возможно. Но просто свойство css display наследуется потомками объекта, поэтому в dom думаю это тоже отражено.

SnoopDog
Сообщения: 57
Зарегистрирован: 22 окт 2009, 01:21

Сообщение SnoopDog » 18 дек 2009, 23:21

oneer,
нет, свойства родителя не копируются детям.

igvard,
попробую действительно определить номер родителя и проверить его аттрибуты

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2637
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Сообщение bigfozzy » 12 окт 2010, 16:19

еще актуально ?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2637
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Сообщение bigfozzy » 19 окт 2010, 20:22

Up

Ответить