【问题标题】:Selenium - Removing and Appending class ValuesSelenium - 删除和附加类值
【发布时间】:2020-01-08 20:16:19
【问题描述】:

我的程序的一部分需要切换哪个元素获得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" 中的任何一个给定子元素将完全从其他div 中删除class,然后将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' 必须是字符串

localesdata-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>

【问题讨论】:

  • 你能在代码中添加locales吗?
  • 试试loc_to_select = with_browser.find_elements_by_css_selector("div[data-val='" + loc + "']")
  • 这听起来像X-Y problem。与其寻求解决问题的帮助,不如编辑您的问题并询问实际问题。你想做什么?
  • 我在代码中添加了locales的描述。
  • "有没有办法可以从一个中删除 'selected' 值并将其添加到另一个?"是的,通过单击您要选择的项目。

标签: python html selenium class tags


【解决方案1】:

由于双重()而出现错误:

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

【讨论】:

  • 确实修复了错误。例如,expected_conditions.presence_of_element_located((By.CSS_SELECTOR, ".css-element")) 中需要双 (),这就是我的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2010-11-15
  • 2011-04-03
  • 1970-01-01
相关资源
最近更新 更多