Мне нужно перейти к объекту со специальным классом, который меняет каждое обновление страницы
Поэтому я решил использовать bs, чтобы найти класс элемента, который работает, но селен вызывает исключение о недопустимом селекторе. класс существует, я могу найти его в источнике страницы. В начале и в конце имени класса есть пробелы, которые по какой-то причине не отображаются, но даже если я добавлю их к имени класса вручную, проблема все еще существует. `
#opening vehicle menu
vehicle_menu_parent = soup.find('div', string='ЛЕГКОВЫЕ АВТОМОБИЛИ').parent
vehicle_menu_class = '" ' + str(vehicle_menu_parent)[11:50] + ' "'
print(vehicle_menu_class) # " x-grid-cell x-grid-cell-gridcolumn-1331 "
with open('test.html', 'w', encoding='utf8') as file:
file.write(driver.page_source)
vehicle_menu = driver.find_element(By.CLASS_NAME, vehicle_menu_class)
action.move_to_element(vehicle_menu).double_click().perform()
time.sleep(10)
`
driver.find_element
ожидает два аргумента: By
и string
, содержащий имя класса.vehicle_menu_class
переменная строится с помощью этой строки: vehicle_menu_class = '" ' + str(vehicle_menu_parent)[11:50] + ' "'
. Итак, в данном случае это " x-grid-cell x-grid-cell-gridcolumn-1331 "
.
Пробелы внутри атрибута класса являются разделителями имен классов. Этот элемент имеет 2 класса: x-grid-cell
и x-grid-cell-gridcolumn-1331
. Поэтому вам нужно пропустить все пробелы.
В конце концов, ваш локатор должен быть построен следующим образом:
driver.find_element(By.CLASS_NAME, "x-grid-cell-gridcolumn-1331")
Но то, что кажется построенным сейчас, это:
driver.find_element(By.CLASS_NAME, "" x-grid-cell x-grid-cell-gridcolumn-1331 "")
Питону и селену сложно понять эти кавычки и пробелы.
Я думаю, что создание такого имени класса должно работать:
vehicle_menu_class = str(vehicle_menu_parent)[24:50]
Я всегда понимал
class
как список имен классов, разделенных пробелами. Возможно, вы хотите вместо этого искать толькоvehicle_menu_class='x-grid-cell-gridcolumn-1331'
?