所以我遇到了这个问题,我运行量角器/硒测试,有时在测试过程中已经检查了单选按钮,有时则没有。
etc:
<div id="TRUCK" class="radio-item checked" data-gtm="truck">
or
<div id="TRUCK" class="radio-item" data-gtm="deliveryOpt-truck">
您可以在其中看到该类有时具有“检查”初始化,有时则没有。
我想要解决的问题是,我想创建一个函数,如果未选中单选按钮,则单击该函数,如果它已选中,则我们只需继续。
我设法做的是:
it('Clicking Truck button', function (done) {
browser.driver
.then(() => browser.wait(EC.presenceOf(element(by.id("TRUCK")))), 30000, "Timed out button")
.then(() => browser.executeScript("arguments[0].click();",element(by.id("TRUCK")).getWebElement()))
.then(() => done());
然而问题是,如果单选按钮已经被选中,它将取消选中它,这不好。再次如此。
我正在尝试制作一个点击的功能。如果单选按钮未选中,则我们单击。如果已经检查过,那么我们继续。
我怎样才能做到这一点?
看来你很接近。识别一个元素时class属性不包含值checked您可以使用以下任一方法定位策略 https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890:
实际上,如果您的用例是调用click()
当。。。的时候class属性没有值checked, 代替presenceOf()
你需要使用预期条件 elementToBeClickable() https://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.elementToBeClickable您可以使用以下任一方法定位策略:
-
xpath https://www.protractortest.org/#/api?view=webdriver.By.xpath:
it('Clicking Truck button', function (done) {
browser.driver
.then(() => browser.wait(EC.elementToBeClickable(element(by.xpath("//div[@id='TRUCK' and not(contains(@class,'checked'))]")))), 30000, "Timed out button")
-
css https://www.protractortest.org/#/api?view=webdriver.By.css:
it('Clicking Truck button', function (done) {
browser.driver
.then(() => browser.wait(EC.elementToBeClickable(element(by.css("div#TRUCK:not(.checked)")))), 30000, "Timed out button")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)