【问题标题】:Selenium how to access two controls of same css classSelenium如何访问同一个css类的两个控件
【发布时间】:2026-01-07 11:40:02
【问题描述】:

我正在使用 selenium ide 进行测试。 我的目标是验证以下内容

1) 文本框的最大和最小长度属性。 2) 验证标签的文本

我的html代码如下:

<div class="control-group">
                                <label class="control-label" for="input01">Email</label>
                                    <div class="controls">
                                        <input name="data[Salon][username]" class="span4" id="username" placeholder="Username or Email" type="text"/>                                   
                                    </div>
                            </div>

                            <div class="control-group">
                                <label class="control-label" for="input01">Password</label>
                                    <div class="controls">
                                        <input name="data[Salon][password]" class="span4" id="password" placeholder="Required" type="password"/>                                                                    
</div>

但在上面我面临以下问题:

a) 我在访问 assertText 或 assertElementPresent 的标签时遇到问题,因为它们具有相同的类名。

b) 我不知道如何验证文本框的最大和最小长度属性。

请注意,当我尝试使用时

document.getElementsByClassName("control-label")

I am getting the following error:

[error] locator not found: document.getElementsByClassName("control-lable"), error = TypeError: e.scrollIntoView is not a function

【问题讨论】:

  • 为什么你的问题上是负载测试标签?

标签: css selenium selenium-ide load-testing


【解决方案1】:

您可以通过以下方式访问第一个标签:

css=div[class='control-group'] label[class='control-label']:contains('Email')

您可以通过以下方式访问第二层:

css=div[class='control-group'] label[class='control-label']:contains('Password')

将这些与命令 assertElementPresent 一起使用,元素定位器中的“包含”允许您验证其中的文本。

你也可以使用 xpath:

//div[@class='control-group']//label[@class='control-label'][text()='Email']
//div[@class='control-group']//label[@class='control-label'][text()='Password']

通常 maxlength 属性设置为输入的属性,但我在您的 html 代码中看不到它。但您可以尝试:

storeAttribute(Selenium IDE 的命令),作为目标,您可以使用 xpath:

/div[@class='control-group']//label[@class='control-label'][text()='Email']/@maxlength
将其保存到某个 var(例如,设置为值字段 smthg,如 attLength),然后回显此 var,如:Selenium IDE 的命令 echo 并放入目标字段 ${attLength}

【讨论】:

  • 对不起,先生,但它不工作它给出以下错误 [错误] 定位器未找到:css=div[class='control-group'] label[class='control-label']:包含('密码')
  • 先生,但作为 css=label[class='control-label']:contains('Password') 的较短版本正在工作,谢谢先生
  • :contains 是 JQuery 而不是有效的 CSS3。请注意,您在使用 SeIDE 时可能会遇到问题。
最近更新 更多