У меня есть форма с изображением, используемым в качестве кнопки отправки. У изображения нет ни идентификатора, ни атрибута класса, а форма отправляется строго с помощью javascript. Я пытаюсь использовать WebDriver (с PHP) для отправки этой небольшой формы. Я использую драйвер Firefox и автономный сервер Selenium v ​​2.30.

На тестируемой странице существует функция javascript sendForm().

Я безуспешно пытался выполнить javascript через webdriver:

<?php
$js = "sendForm()";

$driver->execute(array(
    'script' => $js,
    'args' => array(),
));
?>

Кнопка изображения выглядит так:

<form id="myForm" action="#">
    <!-- input fields go here -->
    <img src="/images/submit_button.png" alt="Go" onclick="sendForm();return false;">
</form>

Таким образом, два способа отправки этой формы будут включать: 1) заставить webdriver выполнять sendForm () самостоятельно или 2) щелкнуть изображение, у которого нет атрибутов для выбора.

Могу ли я выполнить функцию javascript другим способом, кроме того, что я пробовал?

У формы есть идентификатор, поэтому могу ли я выбрать изображение с помощью идентификатора формы и просто щелкнуть по нему?

0
lilbiscuit 11 Июн 2013 в 18:22
Вы можете попробовать саму форму, но как насчет использования src из изображения? Или даже XPath, например: //form@id='myForm']/img (если есть только один img) ...
 – 
Arran
11 Июн 2013 в 18:54
К сожалению, на этой странице есть несколько одинаковых кнопок «go», поэтому использовать src нельзя. Я сейчас смотрю в селектор XPath ...
 – 
lilbiscuit
11 Июн 2013 в 19:02
Использование XPath работало, Arran! $ driver-> get_element ("xpath = // форма [@ id = 'myForm'] // img")
 – 
lilbiscuit
11 Июн 2013 в 20:23

1 ответ

Лучший ответ

Я бы посоветовал вам использовать XPath. Ниже должно работать:

//form[@id='myForm']//img

Это предполагает, что существует только один img как прямой потомок этой конкретной формы, так что имейте это в виду.

0
Arran 11 Июн 2013 в 20:25