我的HTML看起来像这样:
<div class="row">
<div class="col-md-7">
<ul class="breadcrumb">
<li id="get_data"><a href="#">Get data</a></li>
<li id="sampling_task"><a href="#">Sampling</a></li>
<li id="confirm_task"><a href="#">Confirmation</a></li>
</ul>
<div class="container-fluid">
<form action="#" method="post" enctype="multipart/form-data" role="form" class="form-horizontal">
{% csrf_token %}
<div class="form-group">
<label for="id_fileA" class="col-sm-3 control-label" style="text-align: left">
Select dataset A<span class='required_label'>*</span>
</label>
<div class="col-sm-9">
{{ form.fileA|attr:"class:form-control" }}
</div>
</div>
<div class="form-group"></div>
<div class="form-group">
<label for="id_fileB" class="col-sm-3 control-label" style="text-align: left">
Select dataset B<span class='required_label'>*</span>
</label>
<div class="col-sm-9">
{{ form.fileB|attr:"class:form-control" }}
</div>
</div>
<div class="form-group"></div>
<div class="form-group" id="sample_btn" style="display: none">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<input type="button" name="theButton" id="sample-step" value="Start Sampling" class="btn btn-success btn-large disabled" style="border-radius: 5px;">
</div>
</div>
<div class="form-group">
<div class="col-sm-9 col-sm-offset-3" id="sample_msg" style="display: none;">
<p id="sample_text" style="font-size: medium">
Some ABCD message
</p>
</div>
</div>
<div class="form-group">
<div class="col-sm-9 col-sm-offset-3" id="get_sample_confirm_msg" style="display: none;">
<p>
<input type="button" style="height: 40px; width: 140px; border-radius: 5px" name="YesButton" id="accept-step" value="Accept & Continue" class="btn btn-success disabled">
<input type="button" style="height: 40px; width: 140px; border-radius: 5px" name="NoButton" id="cancel-step" value="Cancel Sampling" class="btn btn-danger disabled">
</p>
</div>
</div>
</form>
</div>
</div>
<div class="col-md-5">
</div>
</div>
后端是一个javascript,按下按钮,它会进行处理,如果出现问题,javascript代码会更新消息。
var error = "<div class='alert alert-danger'><p>We encountered an error while sampling: <br /><strong>Sampling failed!!</strong></p>"; error += "<p>Please <a href='mailto:abcd@gmail.com'>contact us</a> if this error persists.</p>";
error += "</div>";
$('#sample_msg').html(error);
现在,在我的硒代码中,如果我这样做:
sample_msg = self.driver.find_element_by_id('sample_msg')
我得到一个空列表结果。我想要的是读取“sample_msg”类中的错误,如果有的话,我已经尝试了一些东西,但它没有成功。感谢帮助。感谢。
答案 0 :(得分:1)
如果您想访问隐藏文本,可能需要使用以下代码:
sample_msg = self.driver.find_element_by_id('sample_msg').get_attribute('textContent').strip()
请注意,text
属性仅允许从可见元素中获取文本
答案 1 :(得分:0)
当您尝试提取错误消息某些ABCD消息时,它包含在<p>
标记中,该标记具有带有样式的父<div>
标记属性设置为 display:none; 。因此,要提取文本,您可以使用以下代码块:
element = driver.find_element_by_xpath("//div[@class='form-group']/div[@id='sample_msg']")
driver.execute_script("arguments[0].removeAttribute('style')", element)
print(driver.find_element_by_xpath("//div[@class='form-group']/div[@id='sample_msg']/p").get_attribute("innerHTML"))
答案 2 :(得分:0)
因此,您必须在单击按钮后等待一段时间,一旦出现某条消息,您需要提取该消息。 请尝试以下方法: -
WebDriverWait wait = new WebDriverWait(webDriver,timeoutInSeconds); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id)); 或
wait.until(ExpectedConditions.elementToBeClickable(By.id)); 确切地说。
另见:
org.openqa.selenium.support.ui.ExpectedConditions用于各种等待场景的类似快捷方式。 org.openqa.selenium.support.ui.WebDriverWait为其各种构造函数。
您也可以在上面的链接中查看python语法。