Selenium Python XPATH我可以将html标记id属性的值打印到控制台

时间:2016-03-11 10:06:32

标签: python-2.7 selenium xpath selenium-webdriver

我有一个带有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();

    }

谢谢, 里亚兹

1 个答案:

答案 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]