C# 按xpath属性查找所有元素(aria required=true)。//*[@aria required=';true';]
我正在尝试获取包含属性aria required的iWebElement列表。我尝试获取此列表的原因是,在用户继续下一页之前,我可以检查用户是否需要填写所有必填字段 到目前为止,经过两天的搜索,我仍然相信这不应该那么难。我使用的表达式是: “/*[@aria required='true']” 根据我的研究,这意味着它将从我的webdriver的根开始搜索所有元素C# 按xpath属性查找所有元素(aria required=true)。//*[@aria required=';true';],c#,selenium,xpath,selenium-webdriver,C#,Selenium,Xpath,Selenium Webdriver,我正在尝试获取包含属性aria required的iWebElement列表。我尝试获取此列表的原因是,在用户继续下一页之前,我可以检查用户是否需要填写所有必填字段 到目前为止,经过两天的搜索,我仍然相信这不应该那么难。我使用的表达式是: “/*[@aria required='true']” 根据我的研究,这意味着它将从我的webdriver的根开始搜索所有元素 [TestMethod] public void CreateProjectWithoutRequiredFields()
[TestMethod]
public void CreateProjectWithoutRequiredFields()
{
GoToProjectPage();
tracking = CM.GoToNewlyCreatedFrameAfterClickButton("ftbNew", tracking, theDriver);
CM.Wait(2000);
bool succesSave = false;
CM.LogToFile("Create project whitout required fields", tracking);
foreach (IWebElement e in theDriver.FindElements(By.XPath(".//*[@aria-required='true']")))
{
FillDataInNewProjectPage();
e.Clear();
CM.GetDynamicElementById("btnSave", theDriver).Click();
try
{
CM.GetDynamicElementById("titel", theDriver).Click();
}
catch (Exception)
{
succesSave = true;
NUnit.Framework.Assert.IsFalse(succesSave, "The page is saved with succes, without entering text in the following required fields : " + e.GetAttribute("id").ToString());
}
CM.Wait(1000);
}
}
我将尝试解释我在这里做了什么:
首先,我进入了一个概述页面,里面有我现有的所有项目。在这个页面上,我点击了ftbNew按钮来创建一个新项目。驱动程序会自动切换到正确的帧(我现在选择了正确的帧,因为我在其他页面上使用了这一行。)
然后排队
foreach(driver.FindElements(By.XPath(“./*[@aria required='true']”)中的IWebElement e)
{
是否应该在我的驱动程序中找到属性为“aria required='true'的元素?”
然后,它将用数据填充页面,清除从其数据中找到的第一个元素,然后尝试保存它
如果在页面上找到元素titel,那么我们仍然在同一页面上,并且保存操作未成功(根据您在页面上对行为的描述,您不能依赖aria required属性来指示必填字段。我认为您应该回到站点的开发人员那里,让他们为您提供可靠的句柄。这可能很简单,只需查找“*”作为与输入字段关联的标签的最后一个字符,但这有点烦人
作为一个旁观者,你应该考虑为你的成功案例找到一个更具体的例外。现在,如果有任何例外发生,你会宣布成功,但这可能不是你真正想要做的。谢谢你这么快回答!你是关于那个例外的赖特,我必须更具体。关于这个表达,我问他们是否Cou.ld use而不是“aria required”use“required”,但他们说这需要做很多工作……所以我尝试通过css类(“verplichteControl”表示“requiredControl”)(在我的初始帖子中,我有一个图像)来获取元素。现在,我确实使用以下表达式来获取元素。“/*[包含(@class,'verplichteControl')]”所以它是有效的…但仍然很奇怪为什么你不能通过属性选择元素。哦,你可以通过属性选择元素。这里的问题是你的应用程序没有始终如一地应用aria required属性。例如,我在你包含的图像中的项目负责人输入中没有看到它。也许你可以考虑一下这里有一个产品缺陷,如果开发人员的工作太多(根本不应该如此!),他们至少应该为他们试图使用的属性做好准备。