Страница 1 из 1

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

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

Добавлено: 17 дек 2009, 20:48
igvard
Не могли бы вы выложить здесь или прислать на мыло sales@webemulator.com пример скрипта с кодом, где это происходит.

Добавлено: 17 дек 2009, 23:07
SnoopDog
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

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

Добавлено: 18 дек 2009, 18:00
SnoopDog
Но это не очень похоже на эмуляцию человека. Человек-то это поле не видит..

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

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

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

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

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

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

Добавлено: 18 дек 2009, 23:21
SnoopDog
oneer,
нет, свойства родителя не копируются детям.

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

Добавлено: 12 окт 2010, 16:19
bigfozzy
еще актуально ?

Добавлено: 19 окт 2010, 20:22
bigfozzy
Up