Python + Selenium:我无法从div获取打印文本



Python + Selenium:我无法从这个div获取打印文本:

<div id="modal-content-18" class="modal-content" data-role="content">
<div>
SignUp Failed. Please Try Again.
</div>
</div>

我试过这个:

resp = browser.find_element_by_class_name("modal-content").text
print resp

但它不起作用。

请帮助我。

我个人更喜欢xpaths,因为这种情况。他们也可以处理许多复杂的案件。请尝试以下操作:

resp = browser.find_element_by_xpath('//div[@class="modal-content"]/div').text
print resp

如果元素在屏幕上不可见。文本方法将为 none。在这种情况下,您需要 textContent 属性。然后使用以下内容:

resp = browser.find_element_by_xpath('//div[@class="modal-content"]/div').get_attribute("textContent")
print resp

让我知道它是否适合您。还要确保页面上只有一个modal-content。如果有多个元素,则您的css_selector不足以识别此元素。要检查这一点,您可以运行以下命令。

l = len(browser.find_elements_by_xpath('//div[@class="modal-content"]/div'))
print l

如果它返回一个大于 1 的数字,则仅靠modal-content类是不够的,您需要扩展您的选择标准。

诱导WebDriverWaitvisibility_of_element_located((并遵循定位器策略。

使用CLASS_NAME

print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.CLASS_NAME,"modal-content"))).text)

使用XPATH

print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='modal-content' and @data-role='content']"))).text)

您需要导入以下内容。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

已编辑检查textContent属性值。

print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.CLASS_NAME,"modal-content"))).get_attribute("textContent"))

print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='modal-content' and @data-role='content']"))).get_attribute("textContent"))

所需的文本注册失败。请重试。在子<div>内,因此您必须诱导WebDriverWait获得所需的visibility_of_element_located(),并且您可以使用以下任一定位器策略:

  • 使用CSS_SELECTOR

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.modal-content[id^='modal-content-'][data-role='content']>div"))).get_attribute("innerHTML"))
    
  • 使用XPATH

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='modal-content' and starts-with(@id, 'modal-content-')][@data-role='content']/div"))).text)
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

您可以在如何使用Python通过Selenium检索标题属性中找到相关讨论?


尾声

根据文档:

  • get_attribute()方法Gets the given attribute or property of the element.
  • text属性返回The text of the element.
  • 使用Selenium的文本和内部HTML之间的区别

最新更新