程序的一部分需要切换哪个元素获取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>
由于双()
而出现错误:
option_n = with_browser.find_element(By.CSS_SELECTOR, "div[data-val='" + loc_option + "']")