当前位置: 首页 > 知识库问答 >
问题:

在Selenium WebDriver测试中使用页面对象时定义Xpath时出现问题

殳宸
2023-03-14

硒新手在这里。。。我正在尝试创建我的第一个测试框架。

考试网站:https://www.phptravels.net/

测试用例:

  1. 打开浏览器,进入网页
  2. 页面加载完成后,点击我的账户-

我在我的页面对象类中使用了xpath,脚本将只运行到启动网页为止。它无法单击登录链接。

我已经尝试包含一个隐式等待,假设加载页面所花费的时间比平常长。即便如此,问题依然存在。

你能帮我理解什么是正确的xpath吗?

代码:

POM_主页。JAVA

package PageObjects;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class POM_HomePage {

    WebDriver driver;

    public POM_HomePage(WebDriver driver) {
        this.driver=driver;
        PageFactory.initElements(driver, this);
    }



    @FindBy(xpath="//*[@id='li_myaccount']/ul/li[1]/a")
    WebElement LinkMyAccount;
    public WebElement clickMyAccount() {
        return LinkMyAccount;
    }


}

主页JAVA

package TestGroupID;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import org.testng.annotations.Test;

import PageObjects.POM_HomePage;
import Resources.MasterScript;


public class HomePage extends MasterScript{

    @Test
    public void SignIn() throws IOException {
        driver=LoadBrowser();
        LoadPropFile();
        driver.get(prop.getProperty("test_website"));
        POM_HomePage pomHome=new POM_HomePage(driver);
        driver.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
        if (pomHome.clickMyAccount().isDisplayed()) {
            pomHome.clickMyAccount().click();
            driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
        }
    }
}

共有1个答案

梁盛
2023-03-14

根据您提到的问题,一旦页面加载,请单击MyAccount-

>

  • POM_主页。java定义两个WebElement和两个关联的函数(),如下所示:

    >

  • 我的账户链接

    @FindBy(xpath="//div[@class='navbar']//li[@id='li_myaccount']/a")
    WebElement LinkMyAccount;
    public WebElement clickMyAccount() {
        return LinkMyAccount;
    }
    

    登录链接

    @FindBy(xpath="//div[@class='navbar']//li[@id='li_myaccount']//ul[@class='dropdown-menu']/li/a[contains(.,'Login')]")
    WebElement LinkLogin;
    public WebElement clickLogin() {
        return LinkLogin;
    }
    

    主页中。javacallisDisplayed()click()这两个WebElement如下所示:

    @Test
    public void SignIn() throws IOException {
        driver=LoadBrowser();
        LoadPropFile();
        driver.get(prop.getProperty("test_website"));
        POM_HomePage pomHome=new POM_HomePage(driver);
        driver.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
        if (pomHome.clickMyAccount().isDisplayed()) {
                pomHome.clickMyAccount().click();
        }
        if (pomHome.clickLogin().isDisplayed()) {
            pomHome.clickLogin().click();
        }
    }
    

  •  类似资料:
    • 问题内容: 我有这个: 当我做一个我得到: 在probleme我有是附加在 有人可以帮忙吗,谢谢 问题答案: 尝试以下代码(已修复):

    • 原因是:groovy.lang.MissingPropertyException:无法将tile1解析为Pages.LoginPage的内容或导航器上下文中的属性。tile1是您忘记导入的类吗? 它在loginPage中寻找tile1,而不是主页。

    • 问题内容: 我正在尝试使用Jackson将一些JSON数据转换为Java对象(精确地说是对象列表),但出现此错误: org.codehaus.jackson.map.JsonMappingException:无法反序列化objectlayerlayer的实例。START_ARRAY令牌之外的详细信息 这是代码: ld 是Json格式的列表,这是让我在jackson教程中感到困惑的部分。这是什么 新

    • 我在Spring MVC中显示jsp页面时遇到了问题。这是一个带有Gradle和IntelliJ CE的基本hello world Spring MVC: 我得到以下错误页面: 这是我的身材。格拉德尔: 视图解析器文件: 控制器页面: jsp页面位置: application.properties文件内容: 使用默认模板引擎,页面显示正确,但使用jsp,它无法工作 日志错误: https://ha

    • 我在从POM中提取版本号时遇到了问题。有人能帮我吗? POM. xml XPATH表达式: 错误:返回未找到匹配项

    • 我试图使用单击一个链接(看起来像是一个选项卡按钮),但出现错误。 这是片段: 我尝试了以下代码: 这是一个错误: 在屏幕截图中,你可以看到,我正在尝试点击建议方案按钮链接