Страница 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