Как найти элемент по названию переменной, используя Selenium и Python

python selenium xpath css-selectors xpath-1.0

15 просмотра

3 ответа

Сборка скребка с селеном в питоне. Попытка выбрать несколько последовательных кнопок с последовательными названиями в форме 'Race n', где n - целое число.

Я хочу быть в состоянии сделать что-то вроде:

driver.find_element_by_css_selector("a[title*=race_i]").click()

где переменная race_i = 'Race ' + str(i)

Можно ли передать поиск css или xpath переменной, а не простой строкой? Количество кнопок варьируется, поэтому мне нужно, чтобы эта функция была адаптируемой и работала для любого значения n.

Автор: Ryan Clayden-Zabik Источник Размещён: 17.05.2019 02:43

Ответы (3)


0 плюса

Как насчет того, чтобы конкатить переменную в селектор xpath / css?

driver.find_element_by_css_selector("a[title*=" + race_i + "]").click()
Автор: Ayoub_B Размещён: 17.03.2019 08:35

0 плюса

Используйте formatфункцию, такую ​​как

for i in range(1,10):
 driver.find_element_by_css_selector("a[title*=race_{}]".format(i)).click()
Автор: Kajal Kundu Размещён: 17.03.2019 08:51

0 плюса

Чтобы найти элемент через переменную, titleвы можете использовать одну из следующих стратегий локатора :

  • css_selector:

    for i in range(1,5):
        driver.find_element_by_css_selector("a[title*=race_+ str(i)]").click()
    
  • xpath:

    for i in range(1,5):
        driver.find_element_by_xpath('//a[contains(@title, "{}")]'.format(i)).click()
    
Автор: DebanjanB Размещён: 17.03.2019 09:15
Вопросы из категории :
32x32