当禁用按钮时如何编写xpath:Selenium + Java + salesforce

时间:2019-01-24 12:29:59

标签: java selenium-webdriver ui-automation salesforce-lightning

我试图仅在按钮被启用时单击按钮,如果按钮被禁用,我将不会单击该按钮并继续进行操作。

当我编写Xpath并检查webElement是否已启用时,导致始终启用,并且在html和启用与禁用之间的区别中我看不出太多差异。

帮我编写xpath,该xpath仅在启用元素时才起作用。

我试图在xpath下面: // button [NOT(@disable)and span [text()='More Steps']]

xpath无效。

当元素启用时:

<button class="slds-button slds-button--neutral showMoreButton uiButton" aria-live="off" type="button" data-aura-rendered-by="2703:0" data-aura-class="uiButton"><!--render facet: 2704:0--><span class=" label bBody" dir="ltr" data-aura-rendered-by="2706:0">More Steps</span><!--render facet: 2708:0--></button>

<span class=" label bBody" dir="ltr" data-aura-rendered-by="2706:0">More Steps</span> 

当元素被禁用时:

<button class="slds-button slds-button--neutral showMoreButton uiButton" aria-live="off" type="button" disabled data-aura-rendered-by="2703:0" data-aura-class="uiButton"><!--render facet: 2704:0--><span class=" label bBody" dir="ltr" data-aura-rendered-by="2706:0">More Steps</span><!--render facet: 2708:0--></button>

<span class=" label bBody" dir="ltr" data-aura-rendered-by="2706:0">More Steps</span> 

实际:当未禁用该元素时,用户可以单击该元素,但是在禁用该元素时,用户仍尝试单击该元素。

预期:仅当元素启用时,用户才可以单击该元素

注意:请勿将问题标记为重复,这是关于salesforce标签的,请理解。

提前感谢您的建议/解决方案

3 个答案:

答案 0 :(得分:0)

尝试一下:

public boolean elementIsEnabled = new Boolean(false);

public boolean elementIsEnabled() {
    if (driver.findElements(By.xpath("//button[contains(@data-aura-rendered-by,'2703:0')]")).size() == 1) {
        elementIsEnabled = true;
    }
    else if (driver.findElements(By.xpath("//button[contains(@disabled data-aura-rendered-by,'2703:0')]")).size() == 1) {
        elementIsEnabled = false;
    }
    return elementIsEnabled;
}

答案 1 :(得分:0)

禁用按钮时-xpath

//div[span/text()='More Steps']

返回两个元素。其中之一是未显示的DOM部分。

check out the DOM tree

此较长的xpath将根据需要工作,因为它仅在活动窗格中显示

//div[contains(@class,'active')]//button[not(@disabled) and span/text()='More Steps']

答案 2 :(得分:0)

“尝试以下代码-

if(Globals.driver.findElement(By.xpath(“” // button [text()='your text']“”))。getAttribute(“” attribute“”)。equals(“” false“ “)){         Globals.driver.findElement(By.className(“”您的按钮类“”))。findElement(By.xpath(“” // button [text()='您的文本']“”))。click();       } 其他{     Globals.driver.findElement(By.className(“”您的按钮类“”))。findElement(By.xpath(“” // button [text()='您的文本']“”))。click();

}”