复制模态窗口的xpath

时间:2017-06-12 14:18:40

标签: selenium xpath

我是这个社区的新手。 我试图从模态窗口执行登录选项的xpath但无法做到。我尝试了xpath的所有组合,但没有得到结果。网站:https://yappily.com/  提前谢谢。

以下是我的代码:

public class Web_Url
    {

        public static void main(String[] args)
        {   
            System.setProperty("webdriver.chrome.driver","C:\\Program Files\\selenium drivers\\chromedriver_win32\\chromedriver.exe");
             WebDriver driver = new ChromeDriver();

            driver.get("https://yappily.com/");         
            driver.manage().window().maximize();      
            System.out.println(driver.getCurrentUrl());
            driver.findElement(By.linkText("Login")).click();
            driver.findElement(By.xpath(".//*[@id='sell-login']/div/div/div[1]/p/a")).click();

    }
}

2 个答案:

答案 0 :(得分:2)

单击“登录”后,“登录模式”框需要一些时间才能加载。所以你必须显式/隐式地处理等待。您可以在Selenium Wait in hereHere上阅读更多内容。

我已使用WebDriverWaitExpectedConditions来实现相同的

此代码将解决您的问题

    WebDriver driver = new ChromeDriver();
    driver.get("https://yappily.com/");
    driver.manage().window().maximize();
    System.out.println(driver.getCurrentUrl());
    driver.findElement(By.linkText("Login")).click();

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement fbLogin = wait.until(ExpectedConditions.presenceOfElementLocated(
            By.xpath(".//*[@id='sell-login']/div/div/div[1]/p/a")));

    fbLogin.click();

此外,您必须处理Xpath。在线下这些xpath不会有很大的帮助。阅读relative xpathscss selectors以及

答案 1 :(得分:0)

点击登录按钮后添加隐式等待。 。driver.manage()超时()implicitwait(5,Timeunit.second)。这将解决。