Selenium webdriver Java:页面对象模型:在chrome浏览器中找不到web元素
我正在尝试使用页面对象模型执行一个简单的testng程序。 我能够启动chrome浏览器。但在页面上找不到任何web元素。它是印刷厂,之后什么也不做。下面是输出。Chrome版本是79.0XX。请注意,简单的java文件(没有页面对象模型)在我的系统中运行良好 主页类: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
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
?是的。我试过了。但它是空的。不打印任何东西这就是你的断言失败的原因。您需要修复最有可能指向正确元素的定位器。您可能还需要添加等待,以确保在提取文本之前加载元素。