Как можно открывать в Selenium веб-элементы, у которых внутри используется JavaScript?

Как написать скрипт на Python с использованием библиотеки Selenium для открытия веб-браузера, перехода на страницу "https://moogold.com/account/", и выбора валюты USD (или любой другой валюты, отличной от рублей) в случае, если установлена валюта по умолчанию рубли?
  • 3 августа 2024 г. 14:23
Ответы на вопрос 2
Для открытия веб-элементов, использующих JavaScript, в Selenium можно использовать методы WebDriverWait и execute_script.

Пример скрипта на Python с использованием библиотеки Selenium для выполнения описанных действий:

```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Инициализация веб-драйвера
driver = webdriver.Chrome()

# Переход на страницу "https://moogold.com/account/"
driver.get("https://moogold.com/account/")

# Ожидание появления валюты на странице
currency = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//div[@class='currency-selector']"))
)

# Получение текущей установленной валюты
current_currency = currency.get_attribute("innerText")

# Если текущая валюта - рубли, выбор валюты USD
if current_currency.strip() == "RUB":
    # Находим и кликаем на элемент с валютой USD
    usd_currency = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//div[contains(@class, 'currency-selector__dropdown')]/div[text()='USD']"))
    )
    usd_currency.click()

# Закрытие браузера
driver.quit()
```

Этот скрипт откроет веб-браузер, перейдет на указанную страницу и выберет валюту USD в случае если валюта по умолчанию - рубли. Пожалуйста, убедитесь, что у вас установлены библиотеки Selenium и WebDriver для выбранного браузера (в данном случае Chrome).
Как в selenium открыть селектор на JS?

Т.е. элемент, который создаётся динамически? Используйте явное ожидание элемента и уже затем взаимодействуйте с ним.
Похожие вопросы