python - 如何在 selenium,python 中打印文本(按其类名)?
问题描述
我有这个代码:
try:
price = wait(driver, 10).until(EC.presence_of_element_located((By.ID, "Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)"))).text
print(price)
except Exception:
print("element not found")
finally:
driver.quit()
我想要它做的是复制雅虎上的股票价格并在终端上打印。我在想,它可能不起作用,因为股票价格正在变化,班级或其他东西也在变化,但是在尝试复制一个不动的元素之后,它仍然不起作用。我究竟做错了什么?
网站上的 element 代码如下所示:
<span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)" data-reactid="31">41.24</span>
解决方案
您正试图通过错误的定位器定位该元素。
所需元素的class
属性值为Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)
,它不是id
属性。
因此,By.ID,
您应该宁愿使用By.CSS_SELECTOR
.
你也应该使用visibility_of_element_located
而不是presence_of_element_located
.
请试试这个:
try:
price = wait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.Trsdu(0.3s).Fw(b).Fz(36px).Mb(-4px).D(ib)"))).text
print(price)
except Exception:
print("element not found")
finally:
driver.quit()
或这个:
try:
price = wait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span[data-reactid="31"]"))).text
print(price)
except Exception:
print("element not found")
finally:
driver.quit()