selenium.common.exceptions.ElementNotInteractableException: Сообщение: Элемент <option>не может быть прокручен в представлении - PullRequest
1 голос
/ 12 апреля 2020

У меня есть HTML с выпадающим списком с сайта бронирования, я пытаюсь использовать Selenium, чтобы щелкнуть по значению из группы параметров, но получаю

selenium.common.exceptions.ElementNotInteractableException: Message: Element <option> could not be scrolled into view

HTML

<!DOCTYPE html>
<html lang="en" data-asset-path="/" data-domain="test_domain.com">
  <head>
    Hello
  </head>

  <h1>Test page</h1>

  <div class="player-select flex-grow relative">
  <select id="member_booking_form_player_2" name="member_booking_form[player_2]"
    ><option value="">Start typing to find player...</option
    ><optgroup label="General">
      <option value="-2">Guest</option
      ><option value="-3">Member not in list</option></optgroup
    ><optgroup label="You and your buddies">
      <option value="349">Player, One</option></optgroup
    ><optgroup label="Other club members">
      <option value="431">Fictional, Person</option
      ><option value="1846">Someone, Madeup</option></optgroup
    ></select>
</div>
</html>

Функция

    def book_a_player_test(self, player_id, surname, first):

        # Use actionchains as it at least interacts with the dropdown
        player = self.browser.find_element_by_xpath("//select[@id='member_booking_form_player_2'][@name='member_booking_form[player_2]']")
        ActionChains(self.browser).move_to_element(player).click().perform()  

        # Try to pick out the element
        select = Select(self.browser.find_element_by_id('member_booking_form_player_2'))
        #ways to handle drop down
        select.select_by_visible_text("Player, One")

Примечание. Я пытался объединить цепочки действий с функциями SELECT, но ничего не работает: - (

Я использую Firefox с последним geckodriver на ма c Каталина

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Попробуйте описанные ниже решения, чтобы решить вашу проблему с опцией выпадающего меню, в выпадающем меню нет прокрутки.

Решение 1:

selectElement = browser.find_element_by_id('member_booking_form_player_2')

ActionChains(self.browser).move_to_element(selectElement).perform()
dropdown = Select(selectElement)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='member_booking_form_player_2']//options[contains(.,'Fictional, Person')]"))).click()

Примечание: пожалуйста, добавьте ниже импорта в ваше решение

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
0 голосов
/ 13 апреля 2020

Спасибо за вашу помощь, комбинацию Actionchains для удаления меню и группы опций, в сочетании с Select_by_Visible.

    def book_a_player_test(self, player_id, surname, first):
        # Located and open the DropDown menu
        player = self.browser.find_element_by_xpath("//select[@id='member_booking_form_player_2'][@name='member_booking_form[player_2]']/optgroup[@label='Other club members']")
        ActionChains(self.browser).move_to_element(player).click().perform()

        # Select the Element from the OptionGroup
        select = Select(self.browser.find_element_by_id('member_booking_form_player_2'))
        select.select_by_visible_text("Player, One")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...