我正在尝试提取文本"Quesadilla“,然而,当我尝试获取文本时,它是空的。
尝试提取的HTML:
<div data-baseweb="block" data-testid="menu-item-name" class="d0 bd ib ic id ie be ed f7 bh fz if">
<div lines="2" class="ig ih ii bq">Quesadilla</div></div>
</div>代码:
menuItemNames = driver.find_elements_by_xpath("//div[@data-testid='menu-item-name']")
for menuItemName in menuItemNames:
print(menuItemName.text)有没有更好的方法来做这件事?当我使用上面的代码获取文本时,我得到了一些div的值,而其他的则返回空或null
发布于 2021-05-17 14:03:58
尝试引入具有显式等待的CSS_SELECTOR,以获得更高的可靠性:
CSS SELETOR:
div[data-testid='menu-item-name'] div 带有显式等待的代码:
driver = webdriver.Chrome("C:\\Users\\etc\\Desktop\\Selenium+Python\\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("Your URL")
ele = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[data-testid='menu-item-name'] div "))).text
print(ele)如果在这个div div[data-testid='menu-item-name']中有10个元素,你可以像这样正确地使用css选择器:
elements = driver.find_elements(By.CSS_SELECTOR, "div[data-testid='menu-item-name']")
for ele in elements:
print(ele.text)了解有关显式等待here的详细信息
https://stackoverflow.com/questions/67564563
复制相似问题