如何使用Selenium和Python定位子代标签元素

2024-09-29 23:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Selenium python试图找出第一个div下的所有子体,因此我使用了以下代码:

label_element =driver.find_elements_by_xpath("//div[@style='display:block']/descendant::label")

但是得到一个空列表[]

<div id="coption5" class="copt" style="display: block;">
<div style="height:100%;display:flex;align-items:center;justify-content:center;">
<div class="coptw">
<div style="width:100%;height:49px;border-bottom:1px solid #888">
<b class="cpopdish">SUPREME CALZONE (M)  10.99</b>
<b class="cpopmodifi gray" data-iid="0" style="font-weight: normal;">
<i class="fa fa-comments-o"></i> Special Request</b><b class="cpopprice">10.99</b></div>
<div class="comain" style="right: 0px;">
<div class="crow" grp="0" grpname="">

<label class="label0" cid="5" style="">
<input type="radio" name="0" coname="BF PEPPERONI(M)" sname="" price="0.00" value="2">BF PEPPERONI(M)<b class="ip">0.00</b>
</label>
<label class="label0" cid="5"><input type="radio" name="0" coname="BLACK OLIVES(M)" sname="" price="0.00" value="3">BLACK OLIVES(M)<b class="ip">0.00</b>
</label>
<label class="label0" cid="5"><input type="radio" name="0" coname="CHICKEN(M)" sname="" price="1.00" value="4">CHICKEN(M)<b class="ip">1.00</b>
</label>
<div style="clear:both"></div></div>
</div><a class="ocancel" data-cid="5" data-grps="0"><i class="fa fa-remove"></i> Cancel</a></div></div>

有没有朋友知道如何使用Xpath或Css选择器来定位所有标签标签

我的代码的第一部分:

driver.find_elements_by_xpath("//div[@style='display:block']")

可以成功定位第一个div元素,因此我认为可见性问题可能没有问题。label标记位于第一个div标记内,label是第一个div的后代

有朋友能帮忙吗


Tags: namedivinputdatastyletypedisplayblock
2条回答

要使用SeleniumPython<label>中提取所有文本项,必须为visibility_of_all_elements_located()诱导WebDriverWait,并且可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    print([my_elem.text for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.copt[id^='coption'] div.comain>div.crow>label")))])
    
  • 使用XPATH

    print([my_elem.text for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='copt' and starts-with(@id, 'coption')]//div[@class='comain']/div[@class='crow']/label")))])
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

下面是找到所有3个标签的正确xpath

//div[@style='display: block;']/descendant::label

enter image description here

相关问题 更多 >

    热门问题