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
我有一个看起来像这样的网站,我想使用 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