上周我问了这个问题,有人将其标记为副本。但是,重复的参考文献没有回答或解决我的问题。
我正在尝试将页面标题添加到复杂的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;
当我从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;
答案 0 :(得分:0)
您尝试访问的内容 - 页面标题 - 不是网络元素。它是网页本身的属性。在Selenium中,您可以通过以下方式访问页面标题:
// ...
({ name: UserName, value: +Count}) );
我使用Java编程,因此可能不是C#
的正确语法