【问题标题】:How do I make Selenium find elements with varying ID?如何让 Selenium 查找具有不同 ID 的元素?
【发布时间】:2016-08-13 22:28:00
【问题描述】:

我想制作一个简单的脚本,它会在以下网址创建一个电子邮件帐户:https://service.mail.com/registration.html

每次我重新加载页面时,输入文本字段都有不同的 ID。如何可靠地定位这些元素?另外,为什么有人要一直更改ID?

例子:

<input class="Text ColouredFocus" type="text" value="" name="z1085243925" id="id11b" maxlength="30" onchange="var wcall=wicketAjaxPost('?wicket:interface=:4:FormRegistration:ListRegistrationData:0:ItemRegistrationData:BorderBoxRegistrationData:PanelRegistrationData:Row1:Field::IBehaviorListener:1:', wicketSerialize(Wicket.$('id11b')),function() { }.bind(this),function() { }.bind(this), function() {return Wicket.$('id11b') != null;}.bind(this));" tabindex="1">

谢谢!

【问题讨论】:

    标签: java selenium


    【解决方案1】:

    您不必总是使用idname 属性。有大量的技术和定位策略。有时选择一个并不像看起来那么简单。

    例如,在这种情况下,从我的角度来看,定位输入字段的一种可读且可靠的方法是依赖 li 父类的类名。姓氏示例:

    driver.findElement(By.cssSelector(".userdata-lastname input"));
    

    【讨论】:

    • 这样也行吗? @FindBy(how = How.CSS, using = ".userdata-lastname input") WebElement firstNameInput;
    • @HelloWorldNoMore 差不多,对于名字,选择器将是 .userdata-firstname input
    • 输入之前好像有空格,所以 '.'不需要?像 .userdata-lastname.input
    • @muraliseleniumtrainer 从我所见,.userdata-lastname input 在这种情况下应该可以工作 - 我们基本上是在具有 userdata-lastname 类的元素下搜索 input 元素。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多