Selenium - удаление и добавление значений класса - PullRequest
1 голос
/ 08 января 2020

Часть моей программы должна переключать, какой элемент получает значение class "selected".

<div class="countryValues">
        <div data-val="" >USA and Canada</div>
        <div data-val="US" >USA - All</div>
        <div data-val="US-AL" >USA - Alabama</div>
        <div data-val="US-AK" class="selected">USA - Alaska</div>
</div>

Нажатие любого из указанных подэлементов в "countryValues" удалит class полностью из всех других div, а затем вставьте class="selected" в нажатый.

Код, который я написал до сих пор:

# locales looks like this: ['US-AL', 'US-AK', 'US-AZ', ...]

# Clear all of the "selected" class values.
for loc_option in locales:
    option_n = with_browser.find_element(By.CSS_SELECTOR, "div[data-val='" + loc_option + "']")
    option_n_class = option_n.get_attribute("class")
    if option_n_class == "selected":
        # Do something to remove the class.
# Put the "selected" class value in where loc fits.
loc_to_select = with_browser.find_element(By.CSS_SELECTOR, "div[data-val='" + loc + "']")
loc_to_select.click()

Первая ошибка возникает, однако, в строке option_n = with_browser.find_element((By.CSS_SELECTOR, "div[data-val='" + loc_option + "']")):

selenium.common.exceptions.InvalidArgumentException: Сообщение: недопустимый аргумент: 'using' должен быть строкой

locales является список data-val значений в виде строк, и оба loc и loc_options выбирают из него элемент

Я пробовал различные способы выбора элементов по data-val и ознакомился с документацией, но ни один не сработал.

Есть ли более простой способ удалить значение "selected" из одного и добавить его к другому?

Например, моя цель состоит в том, чтобы получить из этого:

<div class="countryValues">
        <div data-val="" >USA and Canada</div>
        <div data-val="US" >USA - All</div>
        <div data-val="US-AL" >USA - Alabama</div>
        <div data-val="US-AK" class="selected">USA - Alaska</div>
</div>

На это:

<div class="countryValues">
        <div data-val="" >USA and Canada</div>
        <div data-val="US" >USA - All</div>
        <div data-val="US-AL" class="selected">USA - Alabama</div>
        <div data-val="US-AK">USA - Alaska</div>
</div>

1 Ответ

1 голос
/ 08 января 2020

Вы получаете ошибку из-за двойного ():

option_n = with_browser.find_element(By.CSS_SELECTOR, "div[data-val='" + loc_option + "']")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...