我有一个带有div标签的HTML,它有一个ID属性。 ID值是动态的。 我已经设法构建了一个XPATH来定位ID属性并将其值转换为变量。 我可以将值打印到控制台吗?我想知道变量有什么价值。
我尝试打印以下值但我收到错误: 我试过了:
AttributeError: 'unicode' object has no attribute 'get_attribute'
AttributeError: 'unicode' object has no attribute 'text'
错误是:
element = self.driver.find_element(By.XPATH, '//*[starts-with(@id,"operations_add_process_list_task")]//span//button')
id = element.get_attribute("id")
print id.text
Selenium Python代码是:
(By.XPATH, '//*[starts-with(@id,"operations_add_process_list_task")]//span//button')
XPATH是:
<div id="operations_add_process_list_task_2">
<span/>
<span>
<span class="myinlineblock" title="Clean"
style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;">
<select tabindex="-1">
</span>
</span>
<span>
<span class="" title="Turn group off or on." style="">
<input type="checkbox" checked="" tabindex="-1"/>
</span>
</span>
<span>
<button class="gwt-Button" title="Add the tasks to the selected group." style="display:block;" type="button">Add tasks
</button>
</span>
</div>
HTML是:
select = Select(WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//div[@id="%s"]/span[2]//select' % id))))
一旦我知道了什么值,我就可以使用下一个定位器的ID,例如
(document).ready(function () {
$("body").on("click", ".delFile", removeFile);
});
function removeFile(e) {
var file = $(this).data("Image1");
for (var i = 0; i < myFiles.length; i++) {
if (myFiles[i].name === file) {
myFiles.splice(i,1);
break;
}
}
$(this).parent().remove();
}
谢谢, 里亚兹
答案 0 :(得分:1)
或者,您可以将XPath更改为如下所示,以返回包含id
元素的button
元素:
//*[starts-with(@id,"operations_add_process_list_task")][.//span//button]
或者,如果范围是具有目标child
的元素的直接子节点,您可能希望使用//
轴而不是id
,因为前者将轻微< / em>更高效:
//*[starts-with(@id,"operations_add_process_list_task")][span/button]