Java 如何执行多个操作并在url上单击以文本作为成员登录名的链接http://www.spicejet.com/ 通过SeleniumWebDriver

Java 如何执行多个操作并在url上单击以文本作为成员登录名的链接http://www.spicejet.com/ 通过SeleniumWebDriver,java,selenium,selenium-webdriver,webdriver,webdriverwait,Java,Selenium,Selenium Webdriver,Webdriver,Webdriverwait,我尝试了下面的代码,但不是鼠标悬停和点击“会员登录” 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[co

我尝试了下面的代码,但不是鼠标悬停和点击“会员登录”

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

您可以尝试在moveToElement()调用之间添加等待

WebDriverWait wait=newwebdriverwait(WebDriverRunner.getWebDriver(),10);
等待.直到(预期条件.元素的可视性))

其中“元素”是应该出现在悬停菜单上的菜单

或者,您也可以使用ready解决方案框架,该框架构建在Selenium之上,具有内置的悬停方法和等待,有助于处理页面动态 通过这个,您可以找到hover()方法用法的示例。

要在文本为成员登录的元素上调用
单击()
,首先您必须将鼠标悬停在文本为登录/注册的元素上,然后将鼠标悬停在文本为SpiceCash/SpiceClub Members的元素上,然后使文本为Member Login的元素的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();
        }
    }
    
  • 浏览器快照:


问题出在哪里?无法单击“会员登录”您需要提供更多详细信息。运行此代码时,会发生什么情况?如果您有任何错误,您需要发布堆栈跟踪。您还需要发布相关的html。