Selenium click事件不会触发angularjs ng-click

时间:2015-09-10 10:19:43

标签: angularjs selenium selenium-webdriver selenium-ide

我有这个页面,其中有一个文本框,每个文本框都有一个保存按钮。我需要单击“保存”按钮,以便将值保存在文本框中。它正在手动工作并使用硒。但是当运行Selenium WebDriver时,它不会保存文本框值。但是没有抛出错误异常。输入,点击正在运行。 savetextvalue()不会被触发。 类似的问题Selenium click event does not trigger angularjs event

<pp-save-control fn-save-text="saveText();" btn-class="btn btn-default btn-mtl" button-id="btnkbaemailauthsub" place-holder-text="" input-class="tb-mtl" input-id="txtkbaemailauthsub" config-name="40" title-text="KBA email authentication subject" outer-container-class="div-mtl-header" class="ng-isolate-scope"><div class="div-mtl-header">
    <span class="label-mtl ng-binding">KBA email authentication subject</span><img ng-hide="(isHelpHidden != null &amp;&amp; isHelpHidden != 'true') ? false : true" class="help-mtl ng-hide" src="/Images/help.png">
    <div class="div-mtl-tb-holder">
        <input type="text" placeholder="" class="tb-mtl" name="txtkbaemailauthsub" id="txtkbaemailauthsub">
        <button ng-click="saveTextValue();" ng-hide="false" class="btn btn-default btn-mtl btn-mtl-alignment" name="btnkbaemailauthsub" id="btnkbaemailauthsub" type="button">save</button>
    </div>
</div>
</pp-save-control>

有多个文本框和关联的保存按钮。根据'config-value'(您可以在顶部看到),值将被保存。

4 个答案:

答案 0 :(得分:3)

driver = webdriver.Chrome('/path to /webdriver 22');
driver.find_element_by_css_selector('button[ng-click="func()"]');

答案 1 :(得分:2)

在Selenium IDE中尝试:

 <td>sendKeysAndWait</td>
 <td>id=mybutton</td>
 <td>${KEY_ENTER}</td>

与Webdriver相同:

WebElement element_p = (new WebDriverWait(_driver, 3))
            .until(ExpectedConditions.visibilityOfElementLocated(By
                    .id("myButton")));
element_p.sendKeys(Keys.RETURN);

答案 2 :(得分:0)

在Selenium上使用Selenide时会出现同样的问题。我找到了使用Selenide的解决方法,如果这是一个选项:

找到可点击元素后,使用Selenide的pressEnter()而不是click()。

element.should(exist).pressEnter();

答案 3 :(得分:-1)

我以前自己面对过这个问题。这是我解决的方法。 右键单击按钮->转到检查元素->复制CSS选择器并将其存储在变量中

点击按钮的代码:

your_element = your_driver.find_element_by_css_selector(css_selector_variable)
your_driver.execute_script('arguments[0].click()',your_element)