Selenium C # - Найти элемент по Id динамически (имя Id неизвестно) - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь найти элемент, в котором имя Id изменилось (и я не уверен, на что оно было изменено), поэтому мне нужно найти его динамически.Текущий код:

[FindsBy(How = How.Id, Using = "address.surname")]
public IWebElement AddressLastname_Input { get; set; }

public void AddressEnter_function(IWebDriver D, DataRow UserDetail)
 {
   log.sendkeylog(AddressLastname_Input, 
   UserDetail["LastName"].ToString(), 
   "Enter LastName Address Section", drv: D);
 }

Соответствующий HTML:

<div class="form-group">
   <label class="control-label " for="address.surname">
        Last name<span>&nbsp;<font color="red">*</font></span>
   </label>         
    <input id="address.surname" name="lastName" class="form-control form- 
    control" required="required" type="text" value="">
</div>

Я получаю сообщение об ошибке: «Не удается найти элемент по идентификатору».Есть ли способ найти его, не зная имя / текст конкретного идентификатора?

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Этот запрос не имеет смысла для меня на 100%. Если элемент не найден, он на iFrame или модал случайно?

Идентификатор меняется? Если это так, вы можете попробовать:

    //div[@class='form-group']/input[@name='lastName']
     or
    //label[@for='address.surname']/following-sibling::input
0 голосов
/ 26 марта 2019

Трудно ответить, не видя HTML-разметку, но если идентификатор и имя постоянно меняются, возможно, вы можете попробовать найти его с помощью CSS или, что еще лучше, XPath?

XPath оказался более надежным для меня, хотя и немного медленнее.

WebDriver.FindElement(By.XPath("//input[@class='login']")).Click();

В вашем коде класс управления формой должен дать вам подсказку, поэтому, возможно, вы захотите запустить xpath, который ищет элементы ввода типа, которые имеют класс управления формой и опционально проверяете значение какЧто ж?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...