Как выбрать кадр с помощью selenium с XPATH?

#python #selenium-webdriver

Вопрос:

Я пытаюсь заполнить различные опросы в своем университетском аккаунте автоматизированным способом с помощью selenium.

Я хочу нажать на «ЭСКОЛАР» в части следующего фрагмента кода:

 lt;tbodygt;lt;trgt;lt;td class="title"gt; MODULO lt;/tdgt;lt;/trgt; lt;trgt;lt;tdgt; lt;img src="/ows-img/closed.gif" alt="ALUMNOS"gt;  lt;a href="/wpr/gupmenug.menu?p_sistema_c=ALUMNOSamp;amp;p_sistemaid_n=4amp;amp;p_menupredid_n=4amp;amp;p_pidm_n=425370amp;amp;p_majr_c=425370" target="Menu"gt;ALUMNOSlt;/agt;  lt;/tdgt;lt;/trgt; lt;trgt;lt;tdgt; lt;img src="/ows-img/closed.gif" alt="ESCOLAR"gt;  lt;a href="/wse/gupmenug.menu?p_sistema_c=ESCOLARamp;amp;p_sistemaid_n=1amp;amp;p_menupredid_n=1amp;amp;p_pidm_n=425370" target="Menu"gt;ESCOLARlt;/agt;  lt;/tdgt;lt;/trgt;  lt;/tbodygt;  

Это ошибка, которую я получаю:

 Backtrace:  Ordinal0 [0x005F6023 2514979]  Ordinal0 [0x0058F6B1 2094769]  Ordinal0 [0x004926C8 1058504]  Ordinal0 [0x004BD2D8 1233624]  Ordinal0 [0x004BD4CB 1234123]  Ordinal0 [0x004E7652 1406546]  Ordinal0 [0x004D635A 1336154]  Ordinal0 [0x004E59FF 1399295]  Ordinal0 [0x004D61EB 1335787]  Ordinal0 [0x004B2617 1189399]  Ordinal0 [0x004B3479 1193081]  GetHandleVerifier [0x00785624 1579748]  GetHandleVerifier [0x00830417 2279639]  GetHandleVerifier [0x0068473B 527355]  GetHandleVerifier [0x006837E9 523433]  Ordinal0 [0x00594BF9 2116601]  Ordinal0 [0x00599238 2134584]  Ordinal0 [0x00599372 2134898]  Ordinal0 [0x005A2EB1 2174641]  BaseThreadInitThunk [0x76D36359 25]  RtlGetAppContainerNamedObjectPath [0x774F8944 228]  RtlGetAppContainerNamedObjectPath [0x774F8914 180]  

Мой код:

 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 3)  wait.until(EC.visibility_of_element_located((By.XPATH, "//a[text()='ESCOLAR']"))).click()  

Как я могу это исправить?

Комментарии:

1. Является ли этот локатор уникальным? Появляется ли этот элемент внутри видимого экрана, когда вы открываете эту страницу, или вам нужно прокрутить его, чтобы увидеть?

2. Да, этот локатор уникален, и этот элемент отображается внутри видимого экрана

3. ОК. Это внутри какой-то рамки? Из фрагмента HTML, которым вы поделились, этого не видно…

4. Трудно догадаться, не видя веб-страницу визуально… Может быть, вместо "//a[text()='ESCOLAR']" того, чтобы пытаться "//a[contains(text(),'ESCOLAR')]"

5. Я нахожу проблему: wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"frame[name='Menu']")))