【问题标题】:Click element by Value - protractor按值单击元素 - 量角器
【发布时间】:2015-07-28 03:19:15
【问题描述】:

我正在点击非常简单的模态窗口。一般来说,唯一相关的部分是:

<div id="partSelection">
   <button value="0" name="partSelection">BLATNÍK P L</button>
   <button value="1" name="partSelection">BLATNÍK P P</button>

我需要单击此按钮之一,我知道如何单击此按钮: 路径:

element(by.xpath('//*[@id="partSelection"]/button[2]')).click();

还有按钮文字的方式:

element(by.buttonText("BLATNÍK P P")).click();

但我注意到每个按钮都有不同的值,我相信开发人员不会改变这一点。有没有办法根据值单击元素?

感谢您的建议。

【问题讨论】:

    标签: angularjs testing protractor end-to-end


    【解决方案1】:

    添加到现有答案。

    您可以使用以下 CSS 选择器来解决它:

    element(by.css("#partSelection button[value=0]")).click();
    

    或者,使用by.xpath() 定位器:

    element(by.xpath("//div[@id='partSelection']/button[@value='0']")).click();
    

    请注意,如果您要经常使用“按值”技术,为了遵循 DRY 原则,最好定义一个自定义 by.value() 定位器: p>

    【讨论】:

    • 嗨@alecxe,感谢您的回答,这绝对是有道理的,尽管如此,我收到错误“元素不可见”,但请注意,即使我有问题的代码也有相同的错误。模态窗口有什么限制吗?
    • 只是在其他问题中发现加载可能存在问题(特别是当有一些影响时),我在那里添加了短暂的睡眠,现在出现错误。元素不可点击,其他元素会被点击。 (及其整个页面的主要DIV元素
    • @Andurit 你知道吗,这将是一个疯狂的猜测,但将其添加到 onPrepare():browser.driver.manage().window().maximize(); 并再试一次。
    【解决方案2】:

    如果您只想查找特定属性,此示例应该可以工作。当我试图找出找到特定属性的最佳方法时,我通常会参考这个css selectors

    基本上,细分是找到您想要的标签,在我们的例子中,我们想要 button,然后我们想要在该标签中找到属性。所以我们可以选择 valuename。两个按钮的名称相同,因此我们不想使用它。但是,每个按钮的 是不同的,因此在这种情况下使用起来会很好。

    element(by.ccs('tag[attribute=""]');
    

    标签 = 按钮

    属性=价值

    element(by.css('button[value="0"]')).click(); // button with text BLATNÍK P L 
    element(by.css('button[value="1"]')).click(); // button with text BLATNÍK P P
    

    【讨论】:

    • 感谢您发布此问题的答案!在 Stack Overflow 上只回答 are discouraged 的代码,因为没有上下文的代码转储无法解释解决方案如何或为什么会起作用,使得原始发布者(或任何未来的读者)无法理解其背后的逻辑。请编辑您的问题并包含对您的代码的解释,以便其他人可以从您的回答中受益!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多