Как написать xpath, когда кнопка отключена: Selenium + Java + Salesforce - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь нажать на кнопку, только если она включена, если кнопка отключена, я бы не стал нажимать на кнопку и продолжить.

Когда я пишу Xpath и проверяю, включен ли webElement, в результате всегда включается, и я не вижу большой разницы в html и разнице между включенным и отключенным.

Помогите мне с написанием xpath, который должен работать только при включенном элементе.

Я попытался ниже xpath: // кнопка [NOT (@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 ]

0 голосов
/ 08 февраля 2019

Когда кнопка отключена - xpath

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

возвращает два элемента. Один из них находится в той части DOM, которая не отображается.

проверить дерево DOM

Этот более длинный xpath будет работать так, как вам нужно, потому что он просматривает только активную панель

//div[contains(@class,'active')]//button[not(@disabled) and span/text()='More Steps']
0 голосов
/ 13 февраля 2019

"Попробуйте ниже код-

if (Globals.driver.findElement (By.xpath (" "кнопка // text [) = 'ваш текст']" ")). getAttribute ("" attribute ""). equals ("" false "")) {Globals.driver.findElement (By.className ("" ваш класс кнопок "")). findElement (By.xpath (""// button [text () = 'your text'] "")). click ();} else {Globals.driver.findElement (By.className ("" ваш класс кнопок "")). findElement (By.xpath("" // button [text () = 'ваш текст'] "")). click ();

} "

0 голосов
/ 29 января 2019

попробуйте это:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...