Selenium IE页面标题不起作用。试过IWebDriver.Title

时间:2017-04-11 18:51:51

标签: selenium xpath

上周我问了这个问题,有人将其标记为副本。但是,重复的参考文​​献没有回答或解决我的问题。

我正在尝试将页面标题添加到复杂的html页面。我正试图通过' By'用于查找元素的定位器。这是HTML



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="ctl00_Head1"><title>
	Smart Tracking System
</title><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /><link rel="shortcut icon" type="image/x-icon" href="../images/desktopicon.ico" /><link href="../App_Themes/appthemes/appstyles.css" type="text/css" rel="stylesheet" /><link href="../App_Themes/appthemes/calendarstyles.css" type="text/css" rel="stylesheet" /><link href="../App_Themes/appthemes/tabsstyles.css" type="text/css" rel="stylesheet" /></head>
<body>
&#13;
&#13;
&#13;

当我从Firefox源代码复制xpath时,它说xpath是: / HTML /头/标题

我正在使用C#代码进行验证,但我一直得到&#34; LoadableComponentException ...&#34;
这是我的C#代码:

public class AccountsOverviewPage : CVALoadableComponent<AccountsOverviewPage>
{
    private IWebDriver _driver;

    private By textlabelPageHeader = By.XPath("//head[@class='title' and text()='Smart Tracking System']");

    public AccountsOverviewPage()
    {
        _driver = ScenarioContext.Current.Get<IWebDriver>();
    }

    protected override void ExecuteLoad()
    {
    }

    protected override bool EvaluateLoadedStatus()
    {
        if (!CVAElements.WaitForElementOnPageLoad(_driver, textlabelPageHeader))
        {
            UnableToLoadMessage = "Could not load Accounts Overview page within the designated timeout period";
            return false;
        }
        return true;
    }

    public bool IsAt()
    {
        return CVAElements.CheckElementIsVisible(_driver, textlabelPageHeader);
    }

}

我甚至试过通过Id进行验证,这次我使用了一个我确定存在的元素ID:

private By textlabelPageHeader = By.Id("ctl00_Head1");

仍然验证失败。我不做什么?如有任何帮助,将不胜感激。

更新

这就是我使用Driver.Title方法的方法:

public class AccountsOverviewPage : CVALoadableComponent<AccountsOverviewPage>
{
    private IWebDriver _driver;

    // error happens on this line:
    string textlabelPageHeader = _driver.Title;

    public string TextlabelPageHeader
    {
        get
        {
            return textlabelPageHeader;
        }

        set
        {
            textlabelPageHeader = value;
        }
    }



    public AccountsOverviewPage()
    {
        _driver = ScenarioContext.Current.Get<IWebDriver>();
    }

    protected override void ExecuteLoad()
    {
    }

    protected override bool EvaluateLoadedStatus()
    {
        if (!CVAElements.WaitForElementOnPageLoad(_driver, TextlabelPageHeader))
        {
            UnableToLoadMessage = "Could not load Accounts Overview page within the designated timeout period";
            return false;
        }
        return true;
    }

    public bool IsAt()
    {
        return CVAElements.CheckElementIsVisible(_driver, TextlabelPageHeader);
    }

我收到错误:&#34;字段初始化程序无法引用非静态字段,方法或属性&#34;这里

string textlabelPageHeader = _driver.Title;

1 个答案:

答案 0 :(得分:0)

您尝试访问的内容 - 页面标题 - 不是网络元素。它是网页本身的属性。在Selenium中,您可以通过以下方式访问页面标题:

// ...
({ name: UserName, value: +Count}) );

我使用Java编程,因此可能不是C#

的正确语法