Как найти элемент по названию переменной, используя Selenium и Python - PullRequest
0 голосов
/ 17 марта 2019

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

Я хочу иметь возможность сделать что-то вроде:

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

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

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

Ответы [ 3 ]

0 голосов
/ 17 марта 2019

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

for i in range(1,10):
 driver.find_element_by_css_selector("a[title*=race_{}]".format(i)).click()
0 голосов
/ 18 марта 2019

Чтобы найти элемент через переменную 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, "race_{}")]'.format(i)).click()
    
0 голосов
/ 17 марта 2019

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

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