У меня проблема с селеном.
У меня есть что-то вроде структуры DOM:
<div class="window__popup" style="display: block; transform: translateY(0px);">
...
<div id="user_product_name" class="input__block">
...
<input type="text" name="name" required="required" class="input">
<div class="placeholder">Представьтесь, пожалуйста</div>
...
</div>
...
</div>
Итак, этот div не отображается по умолчанию, но когда я нажимаю кнопку, он становится открытым. И у меня есть этот код, чтобы найти div, который содержит идентификатор:
self.form_elements["UserName"] = Input(self._driver, Locator("xpath", "div[@id='user_product_name']"))
или
self.form_elements["UserName"] = Input(self._driver, Locator("id", "user_product_name"))
Обе эти опции не работают, но выдают исключение тайм-аута:
selenium.common.exceptions.TimeoutException: Message:
Однако этот код работает нормально:
self.form_elements["UserName"] = Input(self._driver, \
Locator("xpath", "//div[contains(@class, 'window__popup')]//div[contains(@class, 'placeholder') and text()='Представьтесь, пожалуйста']/ancestor::div[contains(@class, 'input__block')]"))
Вот почему я считаю, что проблема в div с id, который находится внутри скрытого элемента. Как я могу решить это без написания огромного xpath?
Редактировать:
Этот код находит элемент, но когда я пытаюсь ввести, он генерирует исключение. Извините, за редактирование.