Return 使用 Selenium 的 UID 属性值 Python

Return UID attribute value using Selenium Python

我有一个看起来像这样的网站,我想使用 firefox + selenium + python 提取 uid 字段的内容。每页只有1个UID。

<div class= "parent" >
   <div class="module profile" dcp="1" uid="90">
   ...
   ...
   </div>
</div>

具体见以下内容:

<div class= "parent" >
   <div class="module profile" dcp="1" uid="[RETURN THIS]">
   ...
   ...
   </div>
</div>

我在 selenium 中尝试了几种技术,包括使用

browser.find_elements_by_name
browser.find_elements_by_xpath
browser.find_elements_by_class_name
browser.find_elements_by_css_selector

但是其中 none 能够 return UID。我要么得到一个空集,要么只得到 class(即整个模块 class 而不是 DIV 中的属性)。

我看到有些人推荐 get_attribute 选择器,但我没有成功地将它应用到这个用例中。

任何指导将不胜感激,谢谢。

要提取属性 uid 的值,即文本 90,您可以使用 :

  • css_selector:

    myText = browser.find_element_by_css_selector("div.parent>div.module.profile").get_attribute("uid")
    
  • xpath:

    myText = browser.find_element_by_xpath("//div[@class='parent']/div[@class='module profile']").get_attribute("uid")
    

但是属性 uid 也就是文本 90 是一个动态元素所以你必须引入 WebDriverWait 使 元素可见,您可以使用以下任一解决方案:

  • css_selector:

    myText = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.parent>div.module.profile"))).get_attribute("uid")
    
  • xpath:

    myText = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='parent']/div[@class='module profile']"))).get_attribute("uid")
    

注意:您必须添加以下导入:

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