讯息:元素 尝试通过Selenium单击下拉菜单中的选项时,无法滚动到视图中

我正在尝试选择一个下拉菜单并选择一个选项。我正在使用最新版本的Selenium,最新版本的Firefox,最新版本的geckodriver和最新版本的Python。

这是我的问题:当我尝试选择一个选项时,它给我以下错误:

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

我尝试了各种方法来解决此问题,但似乎没有一种有效。这是我尝试过的一些方法。

mySelectElement = browser.find_element_by_id('providerTypeDropDown')

dropDownMenu = Select(mySelectElement)

dropDownMenu.select_by_visible_text('Professional')

mySelectElement = browser.find_element_by_id('providerTypeDropDown')

dropDown = Select(mySelectElement)

for option in dropDown.options:

message = option.get_attribute('innerText')

print(message)

if message == 'Professional':

print("Exists")

dropDown.select_by_visible_text(message)

break

element = browser.find_element_by_id('providerTypeDropDown')

browser.execute_script("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", element, "Professional")

HTML代码遵循通常的选择标记和选项标记。任何帮助表示赞赏。HTML代码包括在下面。

<select data-av-chosen="providerTypes" id="providerTypeDropDown" data-placeholder="Please Select a Provider Type" name="providerTypeDropDown"

class="chzn-select input-full ng-pristine chzn-done ng-invalid ng-invalid-provider-type" data-ng-options="providerType.value for providerType in request.models.providerTypes"

data-ng-model="request.models.providerType" data-av-validator-field="providerType" data-disable-search-threshold="5" style="display; none;">

<option value="" class="">Please Select a Provider Type</option>

<option value="0">Professional</option>

<option value="1">Institutional</option>

</select>

打印语句用于测试/代码跟踪。

回答:

此错误消息…

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

…意味着<option>您的程序尝试与之交互的项目无法滚动到视图中。

所需元素的 HTML 将使我们对错误有所了解。然而,似乎所需的元素不是clickable/的内

。要解决此问题,您必须诱使

WebDriverWait 使 元素可单击, 并且可以使用以下解决方案:

mySelectElement = browser.find_element_by_id('providerTypeDropDown')

dropDownMenu = Select(mySelectElement)

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='providerTypeDropDown']//options[contains(.,'Professional')]")))

dropDownMenu.select_by_visible_text('Professional')

:您必须添加以下导入:

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

以上是 讯息:元素 尝试通过Selenium单击下拉菜单中的选项时,无法滚动到视图中 的全部内容, 来源链接: utcz.com/qa/419981.html

回到顶部