Невозможно нажать на кнопку через какие-либо локаторы объектов? - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь выполнить нижеприведенный скрипт веб-драйвера Selenium, но я получаю

org.openqa.selenium.ElementNotVisibleException: элемент в настоящее время не виден

<span class="button-inner">Login</span>
@Test
public void BrowserInvocation() {
    System.setProperty("webdriver.chrome.driver", "C:\\Users\\DOGETHER\\Desktop\\Website\\chromedriver.exe");
    @SuppressWarnings("unused")
    ChromeDriver driver=new ChromeDriver();
    driver.get("http://phasorlab-web-dev.s3-website-us-east-1.amazonaws.com/");     /*Get URL */
    driver.manage().timeouts().implicitlyWait(65, TimeUnit.SECONDS);

    driver.findElementByXPath("//span[@class='button-inner']").click();
    //driver.findElementByClassName("button-inner").click();

    //driver.findElementByTagName("[text()='Login']").click();

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

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

WebDriverWait wait=new WebDriverWait(driver,//mention the time);
wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(//mention the By locator));                                                                 

См. Следующую ссылку ссылка , чтобы увидеть доступные ожидаемые условия для явного ожидания.

0 голосов
/ 29 мая 2018

Текст логина в верхнем регистре "ВХОД".так попробуйте это: - // span [text () = 'LOGIN'] Правильный способ - использовать идентификатор элемента, потому что у текста больше шансов получить изменения.

0 голосов
/ 29 мая 2018

Есть две проблемы с вашими локаторами.

  1. Ваш XPATH //span[@class='button-inner'] идентифицирует два узла в DOM.Первый узел скрыт и, следовательно, исключение ElementNotVisibleException.То же самое относится и к driver.findElementByClassName("button-inner")

  2. findElementByTagName("[text()='Login']") неверно, потому что findElementByTagName требуется только имя тега и в основном используется, когда вы хотите получить список элементов определенного тега,Например, driver.findElementByTagName ("a") выдаст вам список всех ссылок на странице

Решение: Использование XPATH //span[@class='button-inner' and text()='Login'] уникальноопределяет правильный элемент.Или просто //span[text()='Login']

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Login']")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...