Как создать XPath / CssSelector для динамической кнопки, где нет класса, идентификатора и имени - PullRequest
0 голосов
/ 28 июня 2018

ниже - проверенный контент. Пожалуйста, помогите мне найти кнопку «Оформить заказ».

<button data-testid="continueCheckoutButton" ng-class="continueDellMetricsClass" ng-click="continueButtonClick()" ng-disabled="disableContinueButton" class="btn btn-success btn-block continueButton" data-metrics="" type="button">Checkout</button>

Ответы [ 4 ]

0 голосов
/ 28 июня 2018

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

//contains[text(),'Submit Order']
0 голосов
/ 28 июня 2018

Если имя кнопки изменяется динамически, вы можете использовать приведенный ниже xpath

//button[@ng-class='continueDellMetricsClass']

Edit:

Сначала необходимо выполнить действие прокрутки страницы с помощью IJavaScriptExecutor, а затем найти элемент со ссылкой cartsummary div.

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("window.scrollBy(0,1000)");
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.XPath("//div[@ng-class='PaymentIconsEnabledCss']//button[@ng-class='continueDellMetricsClass']")));
driver.FindElement(By.XPath("//div[@ng-class='PaymentIconsEnabledCss']//button[@ng-class='continueDellMetricsClass']")).Click();
0 голосов
/ 28 июня 2018

В соответствии с HTML , которым вы поделились, элемент является Angular элементом, поэтому вам нужно WebDriverWait для элемент для кликабельности следующим образом:

var myElement = new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[@class='btn btn-success btn-block continueButton' and contains(.,'Checkout')]")));
0 голосов
/ 28 июня 2018

Попробуйте ниже xpath:

//button[text()='Submit Order']

Код:

driver.findElement(By.xpath("//button[text()='Checkout']")).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...