有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我试图点击按钮,只有当它是启用的,如果按钮被禁用,我不会点击按钮,并继续下去

当我编写Xpath并检查webElement是否已启用时,会导致始终启用,并且我看不到html中有多少区别,也看不到启用和禁用之间的区别

请帮助我编写xpath,它应该只在启用元素时才起作用

我试着: //按钮[不(@disable)和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) 个答案

  1. # 1 楼答案

    当按钮被禁用时-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. # 2 楼答案

    试试这个:

    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;
    }
    
  3. # 3 楼答案

    “尝试下面的代码-

    if(Globals.driver.findElement(By.xpath(“//button[text()='your text']))。getAttribute(“属性”)。等于(““假”)){ 环球。驾驶员findElement(按.className(“您的按钮类”))。findElement(By.xpath(“//按钮[text()='your text']]”)。点击(); } 否则{ 环球。驾驶员findElement(按.className(“您的按钮类”))。findElement(By.xpath(“//按钮[text()='your text']]”)。点击()

    }”