Поиск элементов по их атрибуту в Python Selenium WebDriver

Мне нужно иметь дело с такой таблицей:

<table id="product">
  <tr>
    <td data-sortable-id="ax01">Axe</td>
    <td>Wood</td>
    <td>Red</td>
  </tr>
  <tr>
    <td data-sortable-id="ha01">Hammer</td>
    <td>Iron</td>
    <td>Black</td>
  </tr>
  <tr>
    <td data-sortable-id="na01">Nail</td>
    <td>Metal</td>
    <td>Black</td>
  </tr>
  <tr>
    <td colspan="3">3 Products Listed</td>
  </tr>
</table>

Как я могу выбрать все элементы td, которые имеют атрибут data-sortable-id? Я ничего не могу найти в поиске Google о поиске элементов по атрибуту (без значения, только собственное имя атрибута).

Я пробовал что-то вроде

x = webdriver.find_elements_by_xpath("//td[@data-sortable-id]")
print(len(x))

но результат 0.


person Tan Ory Jaka Perdana    schedule 23.03.2018    source источник
comment
дайте нам свой первоначальный код, который вы пробовали до сих пор   -  person johnII    schedule 23.03.2018
comment
попробуйте проверить xpath для элемента td.   -  person Manvi    schedule 23.03.2018
comment
Следуйте этому stackoverflow.com/questions/49426387/, я думаю, это может вам помочь.   -  person the.salman.a    schedule 23.03.2018
comment
@the.salman.a я не знаю, что ты хочешь мне показать? Я не могу понять.. Не могли бы вы дать мне небольшой совет?   -  person Tan Ory Jaka Perdana    schedule 23.03.2018
comment
Ссылка, которой я поделился, имела аналогичную проблему, следуйте этому ответу. возможно, вам придется немного изменить этот код. Но опять же, самое интересное в том, чтобы создавать свои собственные коды. Разве это не так!   -  person the.salman.a    schedule 23.03.2018
comment
@ the.salman.a, мне нужно только подсчитать, сколько td имеют атрибут data-sortable-id .. и он не равен никакому значению на нем ..   -  person Tan Ory Jaka Perdana    schedule 23.03.2018
comment
Я думаю, что с xpath все в порядке, просто на странице @ runtime нет этого элемента, когда вы пытались получить к нему доступ. Может быть, попробуйте сначала распечатать его и проверить страницу.   -  person johnII    schedule 23.03.2018
comment
я нашел решение..find_element_by_css_selector(tr[data-sortable-id])   -  person Tan Ory Jaka Perdana    schedule 16.04.2018


Ответы (1)


Чтобы найти все теги <td> с атрибутом data-sortable-id, вы можете использовать следующий гранулярный xpath :

"//table[@id='product']/tr//td[@data-sortable-id]"

Возможно, вам нужно вызвать WebDriverWait в сочетании с expected_conditions как visibility_of_all_elements_located следующим образом:

x = WebDriverWait(webdriver, 30).until(EC.visibility_of_all_elements_located((By.XPATH, "//table[@id='product']//tr//td[@data-sortable-id]")))
print(len(x))
person DebanjanB    schedule 23.03.2018