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
但这不起作用。
请帮助我。
答案 0 :(得分:1)
由于这种情况,我个人更喜欢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
类是不够的,您将需要扩展选择条件。
答案 1 :(得分:0)
引发 WebDriverWait 和 visibility_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"))
OR
print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='modal-content' and @data-role='content']"))).get_attribute("textContent"))
答案 2 :(得分:0)
所需的文本注册失败。请重试。位于子项<div>
中,因此您必须为所需的visibility_of_element_located()
引入 WebDriverWait ,并且可以使用以下{{3} }:
使用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
中找到相关的讨论
根据文档:
Gets the given attribute or property of the element.
get_attribute()
属性返回The text of the element.
text