XPATH选择具有相同属性名但值不同的所有元素

时间:2018-05-02 06:10:10

标签: python selenium selenium-webdriver xpath

其实我想构建一个XPATH来逐个点击所有电子邮件。我看到所有电子邮件div中都有一个属性“date-time”。如果该属性的所有值都不同,我如何找到属性为“date-time”的元素的XPATH。

一封电子邮件emails i want o select one by one

 <div tabindex="-1" data- 
 convid="AQQkADAwATYwMAItZmQxOC0yZDI2LTAwAi0wMAoAEAA4dP/BjTqlQb/qmiKQpP+f" 
 data-time="2018-05-01T11:14:04+08:00" id="_ariaId_401" class=""><div> 
 </div><div autoid="_lvv_d" class="_lvv_H1 _lvv_I1 _lvv_L1 
 listItemDefaultBackground" tabindex="-1" role="option" aria- 
 haspopup="true"> 
 <div class="_lvv_M1 ms-bgc-ts 

所有其他标识符看起来非常动态,在刷新页面时会经常更改。您能否帮助找到“日期时间”的XPATH来选择所有电子邮件。

这是我到目前为止所尝试的内容 -

elements = driver.find_elements_by_xpath(//*[text()[contains(.,'data-time')]])

3 个答案:

答案 0 :(得分:1)

您可以按属性找不到值

driver.find_elements_by_xpath('//*[@data-time]')

答案 1 :(得分:0)

您共享的HTML包含 id 为_ariaId_401。

此ID是动态的,但此ID(ariaId)的某些部分是静态的[我假设]。

您可以试用代码

elements = driver.find_elements_by_xpath('//div[contains(@id,'ariaId')]')

答案 2 :(得分:0)

请使用以下xpath进行检查,

driver.find_elements_by_xpath('.//*[contains(@autoid,'_lvv') and @aria-haspopup='true']');