如何使用c#在Selenium中从元素中获取元素

本文关键字:元素 获取 Selenium 何使用 | 更新日期: 2023-09-27 18:08:51

如何从元素中选择元素。例如,我有一个元素div block我想从这个div block中选择所有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();
        }

错误:对象引用未设置为对象的实例。

如何使用c#在Selenium中从元素中获取元素

IWebElement有方法元素。所以你可以试试这个

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();
}

试试:

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();
}