我有这样的html:
$last_entry = Model::latest()->first();
我发现此元素如下:
<div class="event__scores fontBold">
<span>1</span>
-
<span>2</span>
</div>
如果不使用bs4或类似的东西,我无法理解获得current_score = match.find_element(By.XPATH, '//div[contains(@class, "event__scores")]')
print(current_score.get_attribute('innerHTML'))
之类的文本需要做什么。
我知道我可以像这样使用bs4:
1 - 2
但是我想知道仅使用Selenium才能获得类似的结果。
答案 0 :(得分:1)
请考虑使用Explicit Wait而不是find
,因为在您尝试查找元素时可能尚未加载该元素。查看How to use Selenium to test web applications using AJAX technology文章以了解更多详细信息
current_score = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, '//div[contains(@class, "event__scores")]')))
您正在寻找错误的属性,应该使用innerText
而不是innerHTML
print(current_score.get_attribute('innerText'))
或仅检索WebElement.text属性
print(current_score.text)