Получение "элемента не взаимодействующего" для кода ниже - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь нажать на несколько элементов, используя приведенный ниже код на одной веб-странице, но это дает элемент не является интерактивной ошибкой.Я также применил условие ожидания, но это не помогло.

Вот мой код:

driver.get("https://www.cleartrip.com/flights/results?from=BDQ&to=PNQ&depart_date=13/04/2019&adults=1&childs=0&infants=0&class=Economy&airline=&carrier=&intl=n&sd=1555000238907&stops=1&departureTime=0_8");
driver.findElement(By.xpath("//input[@value='1' and @name = 'stops']")).click();
driver.findElement(By.xpath("//input[@value='2' and @name = 'stops']")).click();
driver.findElement(By.xpath("//input[@value='0_8' and @name = 'departureTime']")).click();

ошибка:

FAILED: testFlightSearch
org.openqa.selenium.ElementNotVisibleException: element not interactable
  (Session info: chrome=73.0.3683.86)
  (Driver info: chromedriver=73.0.3683.20 (8e2b610813e167eee3619ac4ce6e42e3ec622017),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.141.0', revision: '2ecb7d9a', time: '2018-10-31T20:09:30'
System info: host: 'DESKTOP-B0K7HHH', ip: '192.168.43.195', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 73.0.3683.20 (8e2b610813e16..., userDataDir: C:\Users\shakti\AppData\Loc...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:62726}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 73.0.3683.86, webStorageEnabled: true}
Session ID: 8931562f8f37533e51073920887d83b0

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Причина, по которой вы получаете org.openqa.selenium.ElementNotVisibleException, заключается в том, что, когда селен переходит по этому URL, в верхней части страницы отображается индикатор выполнения, который все еще загружает содержимое страницы.Во время загрузки ваш код ищет первый элемент, который нужно щелкнуть, но он еще не загружен в DOM.

Необходимо дождаться завершения загрузки индикатора выполнения, прежде чем запускать щелчок элемента.Индикатор выполнения при загрузке имеет значение xpath: //p[@class='loadState tCenter' and contains(text(), 'Getting prices and availability...')], а после полной загрузки значение xpath для поиска равно //p[@class='loadState tCenter' and contains(text(), 'Your search results are ready.')].

Добавьте элемент ожидания для появления второго 2-го xpath, указанного выше, и как только он станет видимым,затем нажмите кнопку элемента.

1 голос
/ 11 апреля 2019

Элементы, которые вы пытаетесь щелкнуть, присутствуют на странице, но не интерактивны и интерактивны, и именно поэтому вы получаете исключение element not interactable.

Вам нужно выбрать элементы, используя xpath, указанный ниже, и это будет работать:

driver.get("https://www.cleartrip.com/flights/results?from=BDQ&to=PNQ&depart_date=13/04/2019&adults=1&childs=0&infants=0&class=Economy&airline=&carrier=&intl=n&sd=1555000238907&stops=1&departureTime=0_8");
driver.findElement(By.xpath("//label[@for='1_1_1']")).click();
driver.findElement(By.xpath("//label[@for='1_1_2']")).click();
driver.findElement(By.xpath("//label[@for='1_1_0_8_departureTime']")).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...