Можно ли обрабатывать два веб-элемента одновременно с помощью Selenium 2 Webdriver? - PullRequest
0 голосов
/ 01 ноября 2011

Оберните текстовую область в родительский элемент div.Эта текстовая область становится видимой только тогда, когда родитель наводит курсор мыши.

Я попробовал следующее:

WebElement pr = driver.findElement(parent);
Actions builder = new Actions(driver);

builder.moveToElement(pr).peform();
driver.findElement (textarea).sendKeys (text);

Но когда веб-драйвер начал искать дочернюю текстовую область, он потерял фокус на родительской.Приходится делать что-то, что могло бы позволить отправлять текст дочернему элементу, когда родитель остается в покое.Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2011

Возможно, вы можете использовать API действий, чтобы выполнить оба действия, навести курсор на родительский элемент и затем ввести дочерний элемент, как показано ниже.

Actions builder = new Actions(driver);      
WebElement parent = driver.findElement(By.id("parent"));
WebElement child = driver.findElement(By.id("child"));
Action hoverAndType = builder.moveToElement(parent)
                      .sendKeys(child, "Text to type in the child")
                      .build();
hoverAndType.perform();
0 голосов
/ 02 ноября 2011

Вы должны будете использовать javascript - я не думаю, что веб-драйвер может обрабатывать более одного элемента одновременно.
Ваши варианты, как я их вижу:

  1. Выможно попытаться изменить атрибут 'style' текстовой области с помощью javascript, чтобы заставить его быть видимым, а затем взаимодействовать с ним в веб-драйвере обычным способом (например, sendkeys).

  2. Установить тексттекстовая область через javascript, обратите внимание, что вы не будете запускать какие-либо события, потому что вы на самом деле ничего не вводите.

...