我无法从元素中获取文本。我认为这是一个动态添加的文本(从Angular)到元素,因此没有直接加载到元素中。元素内的文本格式为“ 3”,在ut周围带有引号。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
import xlsxwriter
import re
pattern = r"[\"\d{1, 2}\"]"
PATH = "C:\Program Files (x86)\chromedriver.exe"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome(PATH, chrome_options=chrome_options)
driver.get("some-url")
xpathPain = "/html/body/div[2]/div/div/div[1]/div/div/div[1]/div[3]/div/div/div[1]/div[3]/development-numbers/status-numbers/div/div[2]/div/h4"
try:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, xpathPain)))
elementPain = driver.find_element_by_xpath(xpathPain)
print(elementPain.text)
except TimeoutException:
print("Failed to load elementPain")
我得到的输出:(空白,像一个空字符串)
。我试图等待直到文本加载EC EC_text_to_be_present_in_element(locator,text_),并尝试对文本部分使用正则表达式。
元素的页面来源是:
<h4 class="status-numbers__number">
"6"
<!---->
</h4>
那么如何从这个元素中得到数字6?
我已经尝试过print(elementPain.get_attribute(“ innerHTML”)),但它得到"<!---->"
了文本的一部分,而不是'"6"'
一部分。我也尝试过.getAttribute("innerText"), .getAttribute("textContent").
我也尝试过使用firefox geckodriver。没有结果。
我设法使用Firefox和以下代码解决了该问题:
try:
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, xpathPain)))
elementPain = driver.find_element_by_xpath(xpathPain)
print(elementPain.get_attribute("innerHTML"))
不知道这与视口外的元素有关。
我设法使用Firefox和以下代码解决了该问题:
try:
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, xpathPain)))
elementPain = driver.find_element_by_xpath(xpathPain)
print(elementPain.get_attribute("innerHTML"))
不知道这与视口外的元素有关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句