【问题标题】:Get text of random element from an array using C# (Selenium)使用 C# (Selenium) 从数组中获取随机元素的文本
【发布时间】:2017-03-15 01:30:01
【问题描述】:

这是我的 Selenium 页面对象的一种方法(该页面在此称为“LandingPage_Page”) - 此方法旨在获取 1 个元素的文本,但诀窍是,该元素是从页面中随机选择的其中包含 12 个相似的元素。我希望它在每次测试运行时从这 12 个元素中获取不同的元素。

    public LandingPage_Page ArticleThumbnailTitle()
    {
        Random r = new Random();
        int rInt = r.Next(0, 11);

        var articleThumbTitle = Driver.FindElements(By.CssSelector(".row .article-title"));
        articleThumbTitle = articleThumbTitle[rInt].Text;            

        return this; 

最后一个 = 之后的所有内容都以红色突出显示。错误说:“无法将类型'string'隐式转换为'System.Collections.ObjectModel.ReadOnlyCollection”

articleThumbTitle 是一个数组吗?我希望它是......如果是这样,我是否正确地将随机数调用到数组中?

提前感谢您的任何指导, 是的。

【问题讨论】:

    标签: c# .net selenium random pageobjects


    【解决方案1】:

    您应该像这样访问 Text 属性:

     string articleThumbTitleText = articleThumbTitle[rInt].Text;   
    

    Text is property 为 IWebElement 定义。所以,你不能用它作为方法。

    【讨论】:

    • 谢谢阿卡什。但是,当我删除括号时,我得到一个不同的错误。错误不再只是.Text;现在,= 之后的所有内容都是红色下划线错误(因此在 articleThumbTitle[rInt].Text 上出现错误;“无法将类型 'string' 隐式转换为 'System.Collections.ObjectModel.ReadOnlyCollection'
    • 您的文章ThumbTitle 的类型似乎是System.Collections.ObjectModel.ReadOnlyCollection<OpenQA.Se‌​lenium.WebElement>。您需要将其更改为字符串类型。我已经更新了帖子。现在,它应该可以工作了
    • 非常感谢阿卡什。
    • 老实说,上面的答案是第一个出现的,我使用了那个答案,但你们俩本质上说的是同一件事。我试图接受两者,但它不会让我。再次感谢。
    【解决方案2】:

    这是不正确的颜, Driver.findelements 将返回一个列表 所以 articleThumbTitle 是一个 list 类型的对象,你不能给它分配一个字符串文本值。改成这样:

    var articleThumbTitle = Driver.FindElements(By.CssSelector(".row .article-title"));
    var randomText = articleThumbTitle[rInt].Text;
    

    我还建议您检查 articleThumbTitle.Count()

    【讨论】:

    • 谢谢!您和 Akash 的第二个编辑答案都为我回答了这个问题。我现在不恰当地对数组说话,我现在明白了。
    猜你喜欢
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2015-01-31
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多