是否可以从具有相同名称的多个元素中获取get_attribute()?

时间:2016-07-26 22:45:53

标签: python list selenium selenium-webdriver css-selectors

我有很多列表元素具有相同的类名但具有不同的id。

示例:

@customInclude('authenticated/partials/header2') 


    Blade::directive('customInclude', function($partial){
        if(Config::get('constants.ORG_ID') === 'organizationId'){
            return "<?php echo $partial; ?>";
        }
    });

我需要提取这些内容。 对于单个列表元素,这不是问题:

<li class="test class" id="111-11-111"> pass </li>
<li class="test class" id="222-22-222"> pass </li>
<li class="test class" id="333-33-333"> pass </li>

但我需要以某种方式达到下一个身份。 如果尝试driver.find_element_by_css_selector(".test.class").get_attribute("id") ,我会收到以下异常:

  

&#39;列表&#39;对象没有属性find_elements_by...

有没有办法提取它们?

2 个答案:

答案 0 :(得分:3)

你可以使用xpath:

listOfLi = driver.find_elements_by_xpath("//li[class='test class']")

或css选择器:

listOfLi = driver.find_elements_by_css_selector(".test.class")

您可以通过逐个索引来访问每个li元素:

for eachLiElement in listOfLi:
    string = eachLiElement.get_attribute("id")

string会为您提供每个元素的ID。

如果您只想获得第二个ID,可以通过

进行

secondId = listOfLi[1].get_attribute("id")

secondId222-22-222

答案 1 :(得分:0)

使用get_attribute()提取所有<li>标签的 id 属性值,您可以使用以下解决方案:

print([my_element.get_attribute("id") for my_element in driver.find_elements_by_css_selector('li.test.class')])