首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取div文本时文本值为空

提取div文本时文本值为空
EN

Stack Overflow用户
提问于 2021-05-17 13:50:51
回答 1查看 37关注 0票数 1

我正在尝试提取文本"Quesadilla“,然而,当我尝试获取文本时,它是空的。

尝试提取的HTML:

代码语言:javascript
复制
 <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>

代码:

代码语言:javascript
复制
menuItemNames = driver.find_elements_by_xpath("//div[@data-testid='menu-item-name']")
for menuItemName in menuItemNames:
   print(menuItemName.text)

有没有更好的方法来做这件事?当我使用上面的代码获取文本时,我得到了一些div的值,而其他的则返回空或null

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-17 14:03:58

尝试引入具有显式等待的CSS_SELECTOR,以获得更高的可靠性:

CSS SELETOR:

代码语言:javascript
复制
div[data-testid='menu-item-name'] div 

带有显式等待的代码:

代码语言:javascript
复制
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选择器:

代码语言:javascript
复制
elements = driver.find_elements(By.CSS_SELECTOR, "div[data-testid='menu-item-name']")
for ele in elements:
    print(ele.text)

了解有关显式等待here的详细信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67564563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档