Как выполнить несколько действий и щелкнуть ссылку с текстом в качестве входа в систему по URL-адресу http://www.spicejet.com/ через selenium-webdriver

введите здесь описание изображения

Я попробовал приведенный ниже код, но это не зависание мыши и не нажатие кнопки «Вход в систему».

WebElement lgn = driver.findElement(By.id("ctl00_HyperLinkLogin"));
WebElement ssm = driver.findElement(By.xpath("//a[contains(text(), 'SpiceCash/SpiceClub Members')]"));
WebElement cgm = driver.findElement(By.xpath("//a[contains(text(),'Member Login')]"));
Actions a1 = new Actions(driver);
a1.moveToElement(lgn).moveToElement(ssm).moveToElement(cgm).click().build().perform();

person Karthik Kumar    schedule 27.08.2018    source источник
comment
В чем проблема?   -  person Guy    schedule 27.08.2018
comment
не могу нажать "вход в систему"   -  person Karthik Kumar    schedule 27.08.2018
comment
Вам нужно дать более подробную информацию. Что именно происходит, когда вы запускаете этот код? если у вас есть какие-либо ошибки, вам нужно опубликовать трассировку стека. Вам также необходимо опубликовать соответствующий html.   -  person Guy    schedule 27.08.2018


Ответы (2)


Чтобы вызвать click() для элемента с текстом Вход в систему, сначала нужно навести указатель мыши на элемент с текстом ВХОД/РЕГИСТРАЦИЯ, а затем Наведите указатель мыши на элемент с текстом как SpiceCash/SpiceClub Members, затем вызовите WebDriverWait для элемента с текстом как Логин участника чтобы быть кликабельным, и вы можете использовать следующее решение:

  • Блок кода:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.interactions.Actions;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class Spicejet_member_login {
    
        public static void main(String[] args) {
    
            System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
            WebDriver driver = new FirefoxDriver();
            driver.get("http://www.spicejet.com/");
            new Actions(driver).moveToElement(new WebDriverWait(driver, 5).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a.link#ctl00_HyperLinkLogin")))).build().perform();
            new Actions(driver).moveToElement(new WebDriverWait(driver, 5).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[@class='hide-mobile']/a[contains(.,'SpiceCash/SpiceClub Members')]")))).build().perform();
            new WebDriverWait(driver, 7).until(ExpectedConditions.elementToBeClickable(By.xpath("//li[@class='hide-mobile']//ul/li/a[@href='https://book.spicejet.com/Login.aspx' and contains(.,'Member Login')]"))).click();
        }
    }
    
  • Снимок браузера:

spicejet_member_login

person DebanjanB    schedule 27.08.2018

Вы можете попробовать добавить ожидания между вашими вызовами moveToElement()

WebDriverWait wait = new WebDriverWait(WebDriverRunner.getWebDriver(), 10); wait.until(ExpectedConditions.visibilityOf(element))

где «элемент» — это ваше меню, которое должно появляться при наведении.

Или вы можете использовать готовый фреймворк Selenide, который построен поверх Selenium и имеет встроенный метод наведения. и ожидания, которые помогают обрабатывать динамику страницы По этой ссылке вы можете найти пример использования метода hover().

person Yuriy Vasylenko    schedule 27.08.2018