Селен: как нажать на кнопку JavaScript - PullRequest
0 голосов
/ 19 сентября 2018

Я должен написать несколько скриптов для автоматических тестов, чтобы проверить время загрузки веб-приложения, построенного по технологии flex / amf.Тест будет состоять в том, чтобы открыть браузер IE, просмотреть несколько вкладок и измерить время, нажав на последнюю вкладку для загрузки содержимого страницы, а затем закрыть браузер.

Я написал в Java небольшой скрипт с Selenium.Веб-Драйвер и Junit.Скрипт открытия IE-окна, введите логин и пароль.У меня проблема с кнопкой "click on".

Сначала я попытался найти и нажать кнопку, найдяElement и By.partiallinktext, но selenium сообщил мне: "Невозможно найти элемент с частичным текстом ссылки" (Ctrl + f прекрасно работает на этом сайте).

Я пытался щелкать мышью с помощью moveByOffset и нажатием кнопок (класс Robot - «tab» и «enter» после заполнения строки паролем).Все они не работают.

Затем я нашел JavascriptExecutor - я думаю, что это может быть ответом на мою проблему, но как мне использовать этот класс?

Кнопка на этом сайте:

<button style="width: 120px;" onclick="javascript:logIn();"> Login </button>

Мой java-код:

WebElement button = driver.findElement(By.partialLinkText("Login")); 
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript ("document.getElementByText(\"Login\")).click();", button); 

У меня мало опыта с тестами, поэтому я буду благодарен за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

В соответствии с HTML, которым вы поделились, чтобы вызвать click() для нужного элемента, вы можете использовать следующее решение:

driver.findElement(By.xpath("//button[normalize-space()='Login']")).click();

С другой стороны, желаемый элемент выглядит как JavaScript включенными в этом случае вы должны заставить WebDriverWait для элемента быть активируемым , и вы можете использовать следующее решение:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[normalize-space()='Login']"))).click();
0 голосов
/ 19 сентября 2018

Не используйте JavaScript.Попробуйте это:

String xPath = "//button[contains(.,'Login')]";
driver.findElement(By.xpath(xPath))).click();

Еще лучше, но не проверено:

// xPath to find a button whose text() (ie title) contains the word Login
String xPath = "//button[contains(text(),'Login')]";
driver.findElement(By.xpath(xPath))).click();

Обратите внимание, что https://sqa.stackexchange.com/ содержит информацию о селене (и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...