<div id="MainCopy_ctl13_presentJob_AddressLinesPanel">
<div>
2nd Floor
</div>
<div>
1801 Morris Avenue
</div>
<div>
Primary: 432567865
</div>
</div>
- 我怎么能只到2楼
- 如何只打印号码(432567865)
element.text返回元素或第一个直接子元素的文本。
在获得带有id的div之后,可以使用css选择器。
element = driver.find_element_by_id(ID)
# This will get first div child
floor = driver.find_element_by_css_selector('#id > div:nth-child(1)')
second = driver.find_element_by_css_selector('#id > div:nth-child(2)')
# OR
childs = element.find_elements_by_tag_name('div')
# This will return all child divs in an array
您也可以使用element.find_element_by_css_selector(selector)
在元素(我们通过driver.find_element_by_id(ID)
获得)中进行搜索
虽然css选择器使用起来更快,但如果您愿意,也可以使用XPath。
print(driver.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_AddressLinesPanel"]/div[contains(.,"Primary")]').split(':')[1])
使用拆分并包含
要打印文本2nd floor
,您可以使用以下定位器策略之一:
-
使用
css_selector
和get_attribute("innerHTML")
:print(driver.find_element(By.CSS_SELECTOR, "div#MainCopy_ctl13_presentJob_AddressLinesPanel > div").get_attribute("innerHTML"))
-
使用
xpath
和文本属性:print(driver.find_element(By.XPATH, "//div[@id='MainCopy_ctl13_presentJob_AddressLinesPanel']/div").text)
要打印文本432567865
,您可以使用以下定位器策略之一:
-
使用
xpath
:print(driver.find_element(By.XPATH, "//div[@id='MainCopy_ctl13_presentJob_AddressLinesPanel']//div[contains(., 'Primary')]").text.split(':')[1])
理想情况下,您需要诱导WebDriverWait等待visibility_of_element_located()
,并且您可以使用以下定位器策略之一:
-
使用
CSS_SELECTOR
和文本属性:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div#MainCopy_ctl13_presentJob_AddressLinesPanel > div"))).text)
-
使用
XPATH
和get_attribute("innerHTML")
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='MainCopy_ctl13_presentJob_AddressLinesPanel']/div"))).get_attribute("innerHTML"))
要打印文本432567865
,您可以使用以下定位器策略之一:
-
使用
xpath
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='MainCopy_ctl13_presentJob_AddressLinesPanel']//div[contains(., 'Primary')]"))).text.split(':')[1])
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
您可以在"如何使用Selenium-Python 检索WebElement的文本"中找到相关讨论
引用
有用文档链接:
get_attribute()
方法Gets the given attribute or property of the element.
text
属性返回The text of the element.
- 使用Selenium的文本和innerHTML之间的差异