Selenium 无法按类名查找元素
Selenium Not Able to Find Elements By ClassName
<table class="sc-fAEnHe ePMtc">
<tbody>
<tr class="sc-fAEnHe ePMtc">
<td classs"sc-jEECVv IBUtl">
</td>
</tr>
当我通过 class 使用 Selenium 的 Find 元素时,它能够找到该元素,我什至尝试用 space (在 e 和 r 或 v 和 I 之后)替换“.”、“-”和“_”,但没有用。
我使用了下面的代码
try:
match_history_table = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.CLASS_NAME, 'sc-fAEnHe ePMtc'))
)
except Exception:
print("Error Finding Match History Table")
driver.quit()
它总是返回异常(EC 是 selenium.webdriver.support.expected_conditions)
>注意:按标签查找元素对我来说不是一个选项
这是 By.CLASS_NAME
在 selenium-java-bindings 中找到的文档。
Find elements based on the value of the "class" attribute. Only one class name should be used. If an element has multiple classes, please use cssSelector(String).
试试 (By.CSS_SELECTOR, '.sc-fAEnHe.ePMtc')
:
try:
match_history_table = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '.sc-fAEnHe.ePMtc'))
)
except Exception:
print("Error Finding Match History Table")
driver.quit()
引用
class name Returns an element whose class name contains the search value; compound class names are not permitted.
W3C 网络驱动程序
和class_name在W3C协议中没有提到,所以它可能成为遗留的
https://www.w3.org/TR/webdriver/#locator-strategies
- 当您搜索 class 名称值时,请注意“sc-fAEnHe ePMtc”代表由 space 分隔的 2 class 个名称,因此您可以通过“sc-fAEnHe”或“ePMtc”
- 除此之外,确保 presence_of_element_located 不需要高度和宽度大于 0
的元素
<table class="sc-fAEnHe ePMtc">
<tbody>
<tr class="sc-fAEnHe ePMtc">
<td classs"sc-jEECVv IBUtl">
</td>
</tr>
当我通过 class 使用 Selenium 的 Find 元素时,它能够找到该元素,我什至尝试用 space (在 e 和 r 或 v 和 I 之后)替换“.”、“-”和“_”,但没有用。 我使用了下面的代码
try:
match_history_table = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.CLASS_NAME, 'sc-fAEnHe ePMtc'))
)
except Exception:
print("Error Finding Match History Table")
driver.quit()
它总是返回异常(EC 是 selenium.webdriver.support.expected_conditions) >注意:按标签查找元素对我来说不是一个选项
这是 By.CLASS_NAME
在 selenium-java-bindings 中找到的文档。
Find elements based on the value of the "class" attribute. Only one class name should be used. If an element has multiple classes, please use cssSelector(String).
试试 (By.CSS_SELECTOR, '.sc-fAEnHe.ePMtc')
:
try:
match_history_table = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '.sc-fAEnHe.ePMtc'))
)
except Exception:
print("Error Finding Match History Table")
driver.quit()
引用
class name Returns an element whose class name contains the search value; compound class names are not permitted.
W3C 网络驱动程序
和class_name在W3C协议中没有提到,所以它可能成为遗留的 https://www.w3.org/TR/webdriver/#locator-strategies
- 当您搜索 class 名称值时,请注意“sc-fAEnHe ePMtc”代表由 space 分隔的 2 class 个名称,因此您可以通过“sc-fAEnHe”或“ePMtc”
- 除此之外,确保 presence_of_element_located 不需要高度和宽度大于 0 的元素