Python 3.x 使用selenium python查找行中的不同元素

Python 3.x 使用selenium python查找行中的不同元素,python-3.x,selenium,xpath,css-selectors,webdriverwait,Python 3.x,Selenium,Xpath,Css Selectors,Webdriverwait,我试图在python3中使用selenium获取表中可用许可证的值。我能够使用XPATH获取值,并遍历每一行。但是XPATH并不理想,因为表可能会更改并包含额外的列,因此无法获得正确的值 我想要的值是98,50,等等 <div class="slick-cell l6 r6 licensesUsedValueGrid"> <div class="slick-cell odd" style="padding: 0px;width:100%;height: 44px;">

我试图在python3中使用selenium获取表中可用许可证的值。我能够使用XPATH获取值,并遍历每一行。但是XPATH并不理想,因为表可能会更改并包含额外的列,因此无法获得正确的值

我想要的值是98,50,等等

<div class="slick-cell l6 r6 licensesUsedValueGrid">
 <div class="slick-cell odd" style="padding: 0px;width:100%;height: 44px;">
   <div style="padding: 15% 4px 0px 0%;float: right;">98</div>
 </div>
</div>

<div class="slick-cell l6 r6 licensesUsedValueGrid">
 <div class="slick-cell odd" style="padding: 0px;width:100%;height: 44px;">
  <div style="padding: 15% 4px 0px 0%;float: right;">50</div>
 </div>
</div>
我希望使用类名或其他方法,这样即使他们向表中添加了另一列,我也能够捕获“已使用许可证”和“可用许可证”的正确值

在chrome上的外观图片:

可能只是:

browser.find_elements_by_css_selector('.licensesUsedValueGrid')

要使用和Python提取可用许可证的所有值,您必须为位于()的所有元素的
可见性诱导WebDriverWait,并且您可以使用以下任一项:

  • 使用
    CSS\u选择器

    print([my_elem.text for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.licensesUsedValueGrid>div.slick-cell.odd>div")))])
    
  • 使用
    XPATH

    print([my_elem.text for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[contains(@class, 'licensesUsedValueGrid')]/div[@class='slick-cell odd']/div")))])
    
  • 注意:您必须添加以下导入:

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

div.licensesUsedValueGrid div[style$='right;']
这样他也可以检索值,怎么样?我正在使用它来遍历行。因此,我需要一些东西来遍历行,并获取“Used”和“Available”中的值,即使列发生移位。您可以在浏览器中对div执行
操作。通过“.licensesUsedValueGrid”选择器(“licensesUsedValueGrid”)查找元素
谢谢,但这不是问题所在。我可以获取每行的值。问题是当表更改为包含附加列时,结果会向右移动
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC