【问题标题】:selenium - python - find element by inner HTMLselenium - python - 通过内部 HTML 查找元素
【发布时间】:2020-12-15 20:44:33
【问题描述】:

我想使用 selenium 和 python 获取以下 Web 元素

<td class="letterbreak first">default</td>

我想根据内部 HTML 文本 default 找到它。我不能使用这个类,因为有其他元素使用同一个类。我试过了:

driver.find_element(By.XPATH,"//*[contains(@innerHTML,'default')]")

但我收到了NoSuchElementException

是否可以根据innerHTML进行查找?如果是这样,我该怎么做?

【问题讨论】:

  • text() 而不是 @innerHTML 应该可以工作。
  • @arundeepchohan 不起作用,但 driver.find_element(By.XPATH,"//*[text()='default']") 起作用了。谢谢。

标签: python-3.x selenium selenium-webdriver xpath webdriverwait


【解决方案1】:

使用任一 xapth。

driver.find_element(By.XPATH,"//*[contains(text(),'default')]")

driver.find_element(By.XPATH,"//*[text()='default']")

为避免同步问题引入WebDriverWait() 并等待visibility_of_element_located() 并关注xpath

WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[contains(text(),'default')]")))

您需要导入以下库。

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

【讨论】:

  • 第二种格式有效,但第一种无效。第一个是部分匹配,第二个是完全匹配吗?
猜你喜欢
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 2020-11-29
  • 2020-10-30
  • 1970-01-01
  • 2016-03-12
  • 2017-08-08
  • 1970-01-01
相关资源
最近更新 更多