python selenium如何遍历到html中一个div下仅文本不同的多个标签?

html如下:

<div class="flex" style="width: 265px;">
    <div class="red-block" style="border: 1px solid rgb(224, 41, 41);">
       <div class="grade-img"><img src="/xxxred-block.png" alt=""></div>
       <div class="grade" id="grade-one" style="font-size:16px; top:-16px; left:7px;"code="A类">A级</div>
       <img class="red-check" src="/xxx/red-check.png" alt="">
    </div>
    <div class="orange-block" style="border: 1px solid rgb(242, 147, 24);">
       <div class="grade-img"><img src="/xxx/orange-block.png" alt=""></div>
       <div class="grade" id="grade-two" style="font-size:16px; top:-16px; left:7px;"code="B类">B级</div>
       <img class="orange-check" src="/xxx/orange-check.png" alt="">
     </div>
     <div class="yellow-block" style="border: 1px solid rgb(214, 204, 39); display: inline-block;">
        <div class="grade-img"><img src="/xxx/yellow-block.png" alt=""></div>
        <div class="grade" id="grade-three" style="font-size:16px;top:-16px; left:7px;"code="C类">C级</div>
        <img class="yellow-check" src="/xxx/yellow-check.png" alt="" style="display: inline-block;">
     </div>
  </div>

python 使用selenium的xpath定位时,需要把参数A级,B级,C级这3个作为测试用例的一个字段分别输入,那就需要捕捉这3个值所在位置才能传入,那么怎么才能捕获呢?就需要来遍历以上这段代码,把这个文本内容作为参数传入进来。

因为这3个参数属于同一个条件中不同的选项,有时候选择A级,有时候选择B级,有时候选择C级,根据参数传入进来,就需要遍历这3个位置

如何遍历并点击以上html中的文本为A级、B级、C级的div?

python代码如下:

def choose_level(self, _level):
        _by = 'xpath'
        # 整个等级区域块
        _all_level_area_loc = '//div[contains(@class, "flex")]/div'
        # 单个等级块
        _single_level_area_loc = _all_level_area_loc + '[{}]'
        # 输入等级的区域
        _level_loc = '//div[contains(@class, "flex")]/div/div[text()="{}"]'
        _level_area = self.find_elements(_by, _all_level_area_loc, 0.5, False)
        if _level:
            for n in range(1, len(_level_area) + 1):
                self.click_element(_by, _single_level_area_loc.format(n))
            for i in _severity.split(','):
                _level = _level_loc.format(i)
                self.click_element(_by, _level, False)
    # 整个等级区域块
    _all_level_area_loc = '//div[contains(@class, "flex")]/div'

    # 单个等级块
    _single_level_area_loc = _all_level_area_loc + '[{}]'

整个等级块包含3个单个等级块,但是等级块中除了文本不一样,其他都一样的,通过在整个等级区域加上下标,举个例子:

xpath1 = (//div/div)[1]  :表示//div/div的第1个元素
xpath2 = (//div/div)[2]  :表示//div/div的第2个元素

如下(将不同的文本内容(A级,B级,C级)抠出来通过传参传进来):

 _single_level_area_loc = _all_level_area_loc + '[{}]'

通过找到整个等级块对象的长度,可以来标记这个下标、然后通过传参就能找到

使用时: _single_level_area = _single_level_area .format([0]): 
_single_level_area[0]即为: <div class="grade" id="grade-one" style="font-size:16px; top:-16px; left:7px;"code="A类">A级</div>

_single_level_area[1]即为: <div class="grade" id="grade-one" style="font-size:16px; top:-16px; left:7px;"code="A类">B级</div>

_single_level_area[2]即为: <div class="grade" id="grade-one" style="font-size:16px; top:-16px; left:7px;"code="A类">C级</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值