首页 > 解决方案 > 从 FindElements() 获取更多 Web 元素类型 - Selenium c#

问题描述

大家好,你能帮我解决我的问题吗?我有方法可以检查页面上是否预设了多个 Web 对象,如果是,那么我单击它们,它按预期工作,但是我喜欢只使用一个 FindElements(),这可能吗?有人能告诉我怎么做吗?谢谢

我的元素:

 public static class Elements
    {                    
        public static string allow = "//button[@data-testid='allow']";
        public static string addToHomescreen="//button[@datatestid='addToHomeScreen']";
    }

我在 for 循环中的方法:

                var allow = driver.FindElements(By.XPath(Elements.allow));
                var addToHS = driver.FindElements(By.XPath(Elements.addToHomescreen));
                var newLike = driver.FindElements(By.XPath(Elements.like));

                if(allow.Count == 0 && addToHS.Count == 0 newLike.Count > 0)
                {
                    driver.FindElement(By.XPath(Elements.like)).Click();
                }
                else if(allow.Count > 0)
                {
                    allow[0].Click();
                    Utils.Wait(1);
                    driver.FindElement(By.XPath(Elements.like)).Click();
                }

我想要类似但无法完成的事情:

var allPopups= driver.FindElements(By.XPath(Elements.allow),By.XPath(Elements.addToHomescreen),);

我只需要 FindElements() 返回更多类型的元素,但我无法弄清楚语法。谢谢

标签: c#selenium

解决方案


您可以自己执行此操作,在 中xpathor关键字xpath

public static string allow_addToHomescreen = "//button[@data-testid='allow' or @datatestid='addToHomeScreen']";

以下也是等价的:-

public static string allow_addToHomescreen = "//button[@data-testid='allow' | @datatestid='addToHomeScreen']";

查看更多详情请点击这里


推荐阅读