Как вы находите data-auto-id - PullRequest
       2

Как вы находите data-auto-id

0 голосов
/ 15 октября 2019

Наши разработчики используют data-auto-id в последнем проекте

  1. усложняет мои сценарии, а
  2. selenium, к сожалению, не распознает его как идентификатор.

Может кто-нибудь сказать мне, как в моем POM я могу идентифицировать авто-идентификатор данных в C # /. NET без огромных накладных расходов кода.

В настоящее время я пишу свой POM, как показано ниже, поэтому, если мы можем придерживаться этого формата, это было бы здорово.

public IWebElement PWReset { get { return _driver.FindElement(By.CssSelector("CSS Data here, too long to post")); } }

HTML для этого примера

<div data-auto-id="Password_Reset" class="StyledForgotPasswordLabel-sc-gxihsg jmrJqH">Forgotten your password?</div>

Предложение для парней

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
public IWebElement PWReset { get { return _driver.FindElement(By.CssSelector("[data-auto-id='Password_Reset']")); } }

Произошла ошибка: OpenQA.Selenium.NoSuchElementException: 'нет такого элемента: Невозможно найти элемент: {"method": "css selector","селектор": "[data-auto-id = 'Password_Reset']"} (информация о сеансе: chrome = 77.0.3865.90) ​​'

Ответы [ 4 ]

1 голос
/ 15 октября 2019

Следующее выражение не является идентификатором, его синтаксис cssSelector

#Password_Reset > div > div

Либо используйте By.CssSelector вместо By.Id

, либо, если Password_Reset является вашим идентификатором, вы можете использовать xpath как:

By.Xpath("//*[@id='Password_Reset']/div/div")

Добавить HTML-код для точного локатора

0 голосов
/ 16 октября 2019

Ответ оказывается намного более простым, чем мы думаем, использование следующего работает / будет работать.

public IWebElement SubmitDetails { get { return _driver.FindElement(By.CssSelector("[data-auto-id='login_button_submit'")); } }
0 голосов
/ 15 октября 2019

Попробуйте использовать приведенный ниже xPath

//div[@data-auto-id='Password_Reset']
0 голосов
/ 15 октября 2019

Вы можете использовать CssSelector для поиска по атрибуту

_driver.FindElement(By.CssSelector("[data-auto-id='Password_Reset']"));

Возможно, вам потребуется использовать wait:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
return wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.CssSelector("[data-auto-id='Password_Reset']")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...