使用Selenium Python返回UID属性值

2024-04-19 22:31:19 发布

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

我有一个类似这样的站点,我想使用firefox+selenium+python提取uid字段的内容。每页只有一个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

但他们都无法返回UID。我要么得到一个空集,要么只得到类(即整个模块类,而不是DIV中的属性)

我看到一些人推荐get_属性选择器,但我没有成功地将其应用到这个用例中

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


Tags: namedivbrowseruidby属性seleniumelements
1条回答
网友
1楼 · 发布于 2024-04-19 22:31:19

要提取属性uid的值,即文本90,可以使用Locator Strategies中的任意一个:

  • 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

相关问题 更多 >