C# 如何使用C从Selenium元素中获取元素
如何从元素中选择元素。例如,我有一个next element div block,希望从该div block中选择所有类型等于radio的元素:C# 如何使用C从Selenium元素中获取元素,c#,selenium,selenium-webdriver,webdriver,element,C#,Selenium,Selenium Webdriver,Webdriver,Element,如何从元素中选择元素。例如,我有一个next element div block,希望从该div block中选择所有类型等于radio的元素: private static readonly By divBlock =By.XPath("//*[@contains(@id, 'qst_8220_qst_8235')]"); private static readonly By elementType = By.XPath(".//*[@type='radio']"); 此代码不适用于我
private static readonly By divBlock =By.XPath("//*[@contains(@id, 'qst_8220_qst_8235')]");
private static readonly By elementType = By.XPath(".//*[@type='radio']");
此代码不适用于我:
foreach (var elem in WebDriver.FindElement(divBlock).FindElements(elementType))
{
elem.Click();
}
错误:对象引用未设置为对象的实例
试着这样做:
IWebDriver Driver = new (select some driver);
var divBlock = Driver.FindElement(By.Xpath("//*[@contains(@id, 'qst_8220_qst_8235')]"));
var elementType = Driver.FindElements(By.XPath(".//*[@type='radio']"));
foreach (var elem in elementType.Count)
{
elem.Click();
}
IWebElement具有方法findelements。所以你可以这样试试
private static readonly By divBlock =By.XPath("//*[@contains(@id, 'qst_8220_qst_8235')]");
private static readonly By elementType = By.XPath(".//*[@type='radio']");
IWebElement Block = Driver.FindElement(divBlock);
List<IWebElement> elementTypes = Block.FindElements(elementType);
Console.WriteLine(elementTypes.count);
foreach (var elem in elementTypes)
{
elem.Click();
}
为什么或如何不起作用?您得到了什么错误?错误:对象引用未设置为对象的实例。谢谢显示发生此错误的行。我认为这个WebDriver是您的驱动程序的一个实例。所以可能你没有初始化它。它必须类似于:IWebDriver WebDriver=新的ChromeDriver;所有内容都已初始化,错误发生在:WebDriver.FindElementdivBlock.findelementSelementTypeForeach var elem当您说“不工作”时,什么内容不工作?您得到了什么错误?相同的错误:错误:对象引用未设置为对象的实例。您以后甚至没有使用divBlock。我编辑了从var到IWebelement的foreach循环。如果在foreach循环中出现错误,请尝试这样做。