硒Python ||如何根据状态点击切换按钮

问题描述 投票:0回答:1

您能帮我解决以下 HTML 和 selenium 问题吗?

<div id="container_elm_guest_code_auto_generate" class="cm-2 rounded bg-white setting-card highlightable">
    <div class="p-4">
        <div class="d-flex">
            <div class="setting-info">
                <div class="setting_title">Auto-generate guest code</div>
            </div>
            <div class="setting-control d-flex justify-content-end">
                <label class="setting_toggle">
                    <input id="elm_guest_code_auto_generate" class="toggle-checkbox" type="checkbox">
                    <div class="toggle-switch"></div>
                </label>
            </div>
        </div>
    </div>
</div>

我正在尝试单击 id“elm_guest_code_auto_generate”的切换按钮,这是我的 python 代码:

toggle_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "elm_guest_code_auto_generate")))

# Check if the toggle button is inactive
if "checked" not in toggle_button.get_attribute("outerHTML"):
    # If the toggle button is inactive, click on it to activate it
    toggle_button.click()
    print("Toggle button activated.")
else:
    print("Toggle button is already active.")

我收到此错误:

Traceback (most recent call last):
  File "C:\Users\muraril\PycharmProjects\pythonProject\GuestProfileRules\GuestProfileRule.py", line 73, in <module>
    toggle_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "elm_guest_code_auto_generate")))
  File "C:\Users\muraril\PycharmProjects\pythonProject\.venv\lib\site-packages\selenium\webdriver\support\wait.py", line 105, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 
python selenium-webdriver
1个回答
0
投票

如果没有看到页面,很难确定,但我猜输入实际上是不可见的,这就是它超时的原因。许多网站/页面使用它来隐藏标准输入外观,并将其替换为一些奇特的复选框、单选按钮等。我会尝试单击它周围的其他元素,以查看哪些单击实际上触发了复选标记。我首先单击“输入”周围的“标签”。

wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label.setting_toggle"))).click()
© www.soinside.com 2019 - 2024. All rights reserved.