Selenium, groovy, не может выполнять какие-либо функции click (), sendKeys () или аналогичные - PullRequest
0 голосов
/ 10 июля 2020

Я не уверен, что мне не хватает в моем коде. Но я пытаюсь запустить сценарий basi c Groovy, в котором я нахожу элемент на странице и нажимаю на него. Мой код работает до такой степени, что я добавляю .click () или .sendKeys (). Следует отметить несколько моментов: я использую селен на ReadyAPI. Я выполнил все инструкции на их странице справки, чтобы убедиться, что у меня есть нужные драйверы в нужных папках.

Мой код следующий:

import java.util.ArrayList;
import org.openqa.selenium.*
import org.openqa.selenium.By
import org.openqa.selenium.WebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.chrome.ChromeDriver
def PATH_TO_CHROMEDRIVER = context.expand( '${PATH_TO_CHROMEDRIVER}' );
System.setProperty("webdriver.chrome.driver", PATH_TO_CHROMEDRIVER);
def WebDriver driver = new ChromeDriver();
driver.get("https://www.rakuten.com/");
WebElement  loginButtonId = driver.findElementsByXPath("//*[@name='email_address']");
loginButtonId.click();
driver.close();
return

Сообщение об ошибке, которое я получаю, следующее:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[]' with class 'java.util.ArrayList' to class 'org.openqa.selenium.WebElement' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: org.openqa.selenium.WebElement() error at line: 12

Я признателен, если кто-нибудь может здесь помочь. Спасибо,

1 Ответ

0 голосов
/ 10 июля 2020

Ваша ошибка находится в этой строке:

WebElement loginButtonId = driver.findElementsByXPath("//*[@name='email_address']");

findElements вы должны использовать, когда вам нужно определить список элементов, если вы хотите получить один элемент, используйте findElement:

WebElement loginButtonId = driver.findElementByXPath("//*[@name='email_address']");
...