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

与编码实践有关的硒

时同
2023-03-14
class LoginPage
{
    private IWebDriver driver;

    public LoginPage(IWebDriver driver)
    { this.driver = driver; }

    //HomePage appears when Login successful
    public HomePage DoLogin(string user, string pass)
    {
        driver.FindElement(By.Name("userfield")).SendKeys(user);
        driver.FindElement(By.Name("passfield")).SendKeys(pass).Submit();

        //what is the above fails and i stay on the LoginPage? returning a HomePage object will be a bad idea here

        HomePage homepage = new HomePage(driver)
        PageFactory.InitElements(driver, homepage)
        return homepage;
    }
}

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

    public void clickExitButton() 
    {
        exitButton.click();
    }

    public LoginPage logout() 
    {
        clickExitButton();

        LoginPage loginpage = new LoginPage(driver)
        PageFactory.InitElements(driver, loginpage);
        return loginpage;
    }
}

谢谢!

共有1个答案

公西志文
2023-03-14

对于您的第一个问题,我之前解决的方法是在每个page类中包含一个函数,该函数指示Selenium当前是否在预期的页面上。例如,homepage类将具有如下内容:

public bool IsCurrentPage()
{
    try
    {
        driver.FindElement(By.LinkText("Logout"));
    }
    catch (Exception)
    {
        return false;
    }
    return true;
}

因此,当您创建新的主页时,您会立即检查它是否有效:

HomePage homepage = new HomePage(driver);
if (!homepage.IsCurrentPage())
   throw new Exception("Invalid homepage object");

然后,您可以自由地以任何适合您的目的的方式处理不匹配。当然这个方法是可以被愚弄的,所以另一个选择是检查URL中的页面名称(例如homepage.html)。您对页面检查的严格程度取决于您想要的准确性和灵活性。

 类似资料:
  • 问题内容: 异步编程是下一个新兴的范式。。。在过去的几个月中,我一直在Node.js中进行编程,并且一直在学习以这种方式编写代码。我有一个在Silverlight中工作的同事,我一直在尝试教他如何使用TPL。我还向他展示了“ await”关键字及其工作方式。 一段时间后,使用回调变得很正常。在Node.js中,我正在使用caolan / async项目来避免深度嵌套的回调。我看了一下源代码,但这就

  • 问题内容: 在python中,您通常使用PEP 8-Python代码样式指南 作为您的编码标准/准则吗?您还有其他更喜欢的正式标准吗? 问题答案: “在python中,您通常使用PEP 8-Python代码样式指南作为您的编码标准/准则吗?您是否还需要其他正式的标准?” 如您所提到的,请遵循PEP 8作为主要文本,并遵循PEP 257 作为文档字符串约定 与Python样式指南一起,建议您参考以下

  • 本文向大家介绍python编码最佳实践之总结,包括了python编码最佳实践之总结的使用技巧和注意事项,需要的朋友参考一下 相信用python的同学不少,本人也一直对python情有独钟,毫无疑问python作为一门解释性动态语言没有那些编译型语言高效,但是python简洁、易读以及可扩展性等特性使得它大受青睐。  工作中很多同事都在用python,但往往很少有人关注它的性能和惯用法,一般都是现学

  • 问题内容: 我一直在学习有关CSS的SitePoint书。 这些示例让我印象深刻的是使用ID作为CSS选择器。 我已经完成了一些CSS设计工作,我总是发现使用Class作为选择器更容易,更通用。 也许是一个.Net的东西,因为我们并不总是可以控制元素的ID … 这是使用CLASS或ID作为选择器的最佳实践吗? 问题答案: 我猜他们在示例中总是使用id,因为它不那么模棱两可。您知道他们正在专门讨论

  • 本文向大家介绍Go JSON编码与解码的实现,包括了Go JSON编码与解码的实现的使用技巧和注意事项,需要的朋友参考一下 在开发应用程序时,客户端(前端页面或APP)与服务端交互是在所难免的,在交互过程传递数据时,最通用和流行格式便是JSON,Go语言提供了encoding/json包,用于处理JSON数据的编码与解码。 除了JSON,XML也常用于前后端的数据交互,不过由于简洁性、可读性和流行

  • 我正在为一个客户端开发一个在线视频存储系统,主要是用PHP编写的。目前我正在建立一个移动版本的桌面网站。我们的桌面站点允许用户在浏览器中观看视频,很像YouTube。 我的客户端通过我创建的manager界面上传视频,我的应用程序使用服务器上的FFmpeg将他的视频转码成几个分辨率和比特率。我不是FFmpeg方面的专家,虽然我不知道每个单独设置的来龙去脉,但我了解它作为一个整体是如何工作的。现在,