【问题标题】:Referencing unnamed element with Selenium WebDriver使用 Selenium WebDriver 引用未命名元素
【发布时间】:2014-06-27 14:50:04
【问题描述】:

我是 selenium 新手,在使用 WebDriver(Java 语言)在网页上查找特定元素时遇到了麻烦。我试图引用的特定元素是链接,但没有与它们关联的任何 ID/其他 XML 属性。我无权访问 HTML 源代码,因此无法向元素添加任何标识符。我不确定使用 FindBy 函数能做什么和不能做什么,所以有人可以看看 HTML 并告诉我如何找到指定的元素(最终目标是使用 WebElement.Click () 方法就可以了)。

<div class="col-md-12">
    <h3>My Registered Cards</h3>
    <div id="cards" class="row list-group">
        <div>

这条线

          <a href="/website/carddetails?cardnumber=1">

这条线

                <div class="tile col-md-3 img-rounded">
                    <div class="tile-inner">
                        <img class="group list-group-image col-md-12 hidden-xs hidden-sm" src="http://placehold.it/200x100/000/fff" alt="">
                        <div>
                            <div class="row">
                                <h4 class="group inner list-group-tile-heading col-xs-12 col-md-12">Card Name</h4>
                            </div>
                        </div>
                    </div>
                </div>
            </a>

        </div>
        <div>

这条线

          <a href="/website/carddetails?cardnumber=2">

这条线

                <div class="tile col-md-3 img-rounded">
                    <div class="tile-inner">
                        <img class="group list-group-image col-md-12 hidden-xs hidden-sm" src="http://placehold.it/200x100/000/fff" alt="">
                        <div>
                            <div class="row">
                                <h4 class="group inner list-group-tile-heading col-xs-12 col-md-12">Card Name</h4>
                            </div>
                        </div>
                    </div>
                </div>
            </a>

        </div>
    </div>
</div>

我已经尝试了几种不同的方法,但是 WebDriver 在这两种情况下都没有找到正确的元素。

@FindBy(linkText = "Card Name")
    public List<WebElement> cards;

@FindBy(xpath = "//div[@id='cards']/div/@a")
    public List<WebElement> cards;

编辑:感谢 SiKing 不完全是我正在寻找的答案,但您确实为我指明了正确的方向。

我实际上最终做的是

@FindBy(xpath = "//div[@id='cards']/div/a")
    public List<WebElement> cards;

如果不清楚,我试图做的是获取网站上所有卡片(特别是卡片链接)的列表,然后我可以按顺序点击这些卡片

【问题讨论】:

    标签: java html selenium selenium-webdriver find


    【解决方案1】:

    选择器

    @FindBy(linkText = "Card Name")
    

    什么也找不到,因为它会查找包含在 a 标记中的文本。

    选择器

    @FindBy(xpath = "//div[@id='cards']/div/@a")
    

    正在寻找元素div 的属性a,在具有id='cards' 属性的元素div 下......所以也不是你想要的。

    你可能想要:

    @FindBy(xpath = "//div[@id='cards']//a")
    

    这将找到div 下的第一个a 元素,属性为id='cards'

    嘿,如果一切都失败了,请尝试文档。 :)

    【讨论】:

    • “通过链接文本查找”是否仅适用于锚标签而不是 h4 标签?
    猜你喜欢
    • 2020-12-02
    • 2020-01-09
    • 2015-10-15
    • 2017-07-03
    • 2019-06-03
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    相关资源
    最近更新 更多