首页 > 解决方案 > Selenium - 删除和附加类值

问题描述

我的程序的一部分需要切换哪个元素获取classvalue "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:消息:无效参数:“使用”必须是字符串

locales是一个data-val值列表,作为字符串,两者都是locloc_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>

标签: pythonhtmlseleniumclasstags

解决方案


由于 double ,您会收到错误()

option_n = with_browser.find_element(By.CSS_SELECTOR, "div[data-val='" + loc_option + "']")

推荐阅读