Selenium webdriver Java:页面对象模型:在chrome浏览器中找不到web元素

Selenium webdriver Java:页面对象模型:在chrome浏览器中找不到web元素,selenium,webdriver,Selenium,Webdriver,我正在尝试使用页面对象模型执行一个简单的testng程序。 我能够启动chrome浏览器。但在页面上找不到任何web元素。它是印刷厂,之后什么也不做。下面是输出。Chrome版本是79.0XX。请注意,简单的java文件(没有页面对象模型)在我的系统中运行良好 主页类: public class HomePage { WebDriver driver; By homePageUserName = By.xpath("/html/body/header/div[1]/span[2

我正在尝试使用页面对象模型执行一个简单的testng程序。 我能够启动chrome浏览器。但在页面上找不到任何web元素。它是印刷厂,之后什么也不做。下面是输出。Chrome版本是79.0XX。请注意,简单的java文件(没有页面对象模型)在我的系统中运行良好

主页类:

public class HomePage {
    WebDriver driver;
    By homePageUserName = By.xpath("/html/body/header/div[1]/span[2]/a[1]");

    public HomePage(WebDriver driver){
        this.driver = driver;
    }

    public String getHomePageDashboardUserName(){
        System.out.println("foundd");
        return driver.findElement(homePageUserName).getText();
    }
}
import pages.HomePage;

public class TestPage {
    WebDriver driver;
    HomePage objHomePage;

    @Parameters("browser")
    @BeforeTest
    public void beforeTest(String browser){
        if(browser.equalsIgnoreCase("chrome"))
        {
            System.setProperty("webdriver.chrome.driver", "C:\\jars\\chromedriver.exe");
            WebDriver driver=new ChromeDriver();
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

            driver.get("MY URL here");

            driver.manage().window().maximize();
        }
    }

    @Test(priority=0)
    public void test_Home_Page_Appear_Correct(){
        objHomePage = new HomePage(driver);
        String PageTitle = objHomePage.getHomePageDashboardUserName();

        if(PageTitle!=null)
        {
            Assert.assertTrue(PageTitle.toLowerCase().contains("us"));
         }
    }
}

TestPage类:

public class HomePage {
    WebDriver driver;
    By homePageUserName = By.xpath("/html/body/header/div[1]/span[2]/a[1]");

    public HomePage(WebDriver driver){
        this.driver = driver;
    }

    public String getHomePageDashboardUserName(){
        System.out.println("foundd");
        return driver.findElement(homePageUserName).getText();
    }
}
import pages.HomePage;

public class TestPage {
    WebDriver driver;
    HomePage objHomePage;

    @Parameters("browser")
    @BeforeTest
    public void beforeTest(String browser){
        if(browser.equalsIgnoreCase("chrome"))
        {
            System.setProperty("webdriver.chrome.driver", "C:\\jars\\chromedriver.exe");
            WebDriver driver=new ChromeDriver();
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

            driver.get("MY URL here");

            driver.manage().window().maximize();
        }
    }

    @Test(priority=0)
    public void test_Home_Page_Appear_Correct(){
        objHomePage = new HomePage(driver);
        String PageTitle = objHomePage.getHomePageDashboardUserName();

        if(PageTitle!=null)
        {
            Assert.assertTrue(PageTitle.toLowerCase().contains("us"));
         }
    }
}



您正在打印“found”,但实际上没有找到任何内容。您尚未在该方法中执行任何操作。在测试中,在断言其内容之前,先打印
PageTitle
。它打印什么?我猜您的定位器已关闭。您好,我打印“found”只是为了验证控件是否进入getHomePageDashboardUserName()函数。我的定位器按homePageUserName=By.xpath(“/html/body/header/div[1]/span[2]/a[1]”);是一个链接,其链接文本为“关于我们”。所以我试图返回那个文本。如果那个文本不是空的,我检查文本是否包含“us”字。然后测试应该通过。不知道为什么会失败。这不仅仅是针对该定位器,如果我尝试对其他页面元素执行任何操作,测试将失败。您是否按照我的要求打印了
PageTitle
?是的。我试过了。但它是空的。不打印任何东西这就是你的断言失败的原因。您需要修复最有可能指向正确元素的定位器。您可能还需要添加一个等待,以确保在提取文本之前加载了元素。您正在打印“found”,但实际上没有找到任何内容。您尚未在该方法中执行任何操作。在测试中,在断言其内容之前,先打印
PageTitle
。它打印什么?我猜您的定位器已关闭。您好,我打印“found”只是为了验证控件是否进入getHomePageDashboardUserName()函数。我的定位器按homePageUserName=By.xpath(“/html/body/header/div[1]/span[2]/a[1]”);是一个链接,其链接文本为“关于我们”。所以我试图返回那个文本。如果那个文本不是空的,我检查文本是否包含“us”字。然后测试应该通过。不知道为什么会失败。这不仅仅是针对该定位器,如果我尝试对其他页面元素执行任何操作,测试将失败。您是否按照我的要求打印了
PageTitle
?是的。我试过了。但它是空的。不打印任何东西这就是你的断言失败的原因。您需要修复最有可能指向正确元素的定位器。您可能还需要添加等待,以确保在提取文本之前加载元素。