Несколько питонических / программных нот:
- цикл for с диапазоном (1) повторяется один раз (для 0-го элемента); таким образом, не очень полезно, поскольку обычный код повторяется один раз в любом случае.
- Каждый раз, когда вы видите, как записывается похожий код, вы можете, как правило, абстрагировать логику в повторно используемый код.
Я лично не знаком с селеном и не очень хорош с CSS, но вот пример с питоном:
def get_digit(cap,attr):
element = driver.find_element_by_css_selector(cap).get_attribute(attr)
return (element, int(element))
caps = ['#et_pb_contact_form_0', '#et_pb_contact_form_1', '#et_pb_contact_form_2']
cap_end = ' > div.et_pb_contact > form > div > div > p > input'
for cap in caps:
tmp_cap = cap + cap_end
captext1, capnumb1 = get_digit(tmp_cap, "data-first_digit")
captext2, capnumb2 = get_digit(tmp_cap, "data-second_digit")
driver.find_element_by_css_selector(tmp_cap).send_keys(capnumb1 + capnumb2)
Дайте мне знать в комментарии, если это работает для вас!
Использование моей функции с логикой комбинированных селекторов CSS JaSON:
def get_digit(cap,attr):
element = driver.find_element_by_css_selector(cap).get_attribute(attr)
return (element, int(element))
cap_css = '#et_pb_contact_form_0 > div.et_pb_contact > form > div > div > p > input, #et_pb_contact_form_1 > div.et_pb_contact > form > div > div > p > input, #et_pb_contact_form_2 > div.et_pb_contact > form > div > div > p > input'
cap_list = driver.find_elements_by_css_selector(cap_css)
for cap in cap_list:
captext1, capnumb1 = get_digit(cap, "data-first_digit")
captext2, capnumb2 = get_digit(cap, "data-second_digit")
cap.send_keys(capnumb1 + capnumb2)