如何在 html 页面上获取 WebElement Uninue 标识符(Selenium、C#)

问题描述 投票:0回答:1

我想创建 WebElement 类 (.Net) 的子级 但问题是 WebElement 构造函数需要 2 个参数(驱动程序、id) 我知道如何获取元素的 id(如果它具有可见属性 ID),但如果它没有 有什么途径获得

    public class CoreWebelement : WebElement
    {
        IWebDriver driver;
        public CoreWebelement(WebDriver parentDriver, string id, By? parentFrame = null) : base(parentDriver, id)
        {
            driver = parentDriver;
        }
        public void ClickJS()
        {
            IJavaScriptExecutor jsExecutor = (IJavaScriptExecutor)driver;
            jsExecutor.ExecuteScript("arguments[0].click();", this);         
        }
    }

我试图在 WebElement 类中找到它,但它受到保护,所以我无法从外部获取 还尝试了基本的东西,如 element.GetAttribute("ID") 和 js: element.id ,但正如我所说,它仅在元素具有可见 ID 属性时才有效

c# .net selenium-webdriver ui-automation
1个回答
0
投票

这不是对您问题的直接答案,但它是一种需要更少工作的解决方法:使用扩展方法。

namespace OpenQA.Selenium;

public static class IWebDriverExtensions
{
    public static void ClickElementWithJavaScript(this IWebDriver driver, IWebElement elementToBeClicked)
    {
        var executor = (IJavaScriptExecutor)driver;

        executor.ExecuteScript("arguments[0].click();", elementToBeClicked);
    }
}

只要 C# 文件中有

using OpenQA.Selenium;
,您就可以从任何 IWebDriver 实例访问此方法:

var link = driver.FindElement(...);

driver.ClickElementWithJavaScript(link);

我非常确定您可以创建 WebElement 的子类,但如果我没记错的话,Selenium 要求您进行一些 C# 操作以确保 IWebDriver 对象返回子类的实例而不是 WebElement。

© www.soinside.com 2019 - 2024. All rights reserved.