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

enter image description here

Я попробовал приведенный ниже код, но он не зависает и не щелкает мышью на «Логин пользователя»

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();

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Чтобы вызвать click() для элемента с текстом как Имя пользователя , сначала вам нужно Наведите указатель мыши на элемент с текстом как ВХОД / ПОДПИСЬ затем Наведите указатель мыши на элемент с текстом для членов SpiceCash / SpiceClub , затем введите 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

0 голосов
/ 27 августа 2018

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

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

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

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

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