我试图点击一个具有以下html结构的按钮:无法点击“英语”按钮。它说没有这样的元素。尝试Xpath

2024-06-09 23:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

无法单击英文按钮。 它说不存在这样的元素

尝试了以下方法并选择了该方法

element = WebDriverWait(driver, 40).until(expected_conditions.element_to_be_clickable((By.XPATH, "/html/body/content/main/div/form")))
select = Select(driver.find_element_by_css_selector("label[for='language-MCQ'] span[class='me-2']"))
  1. 代码块:
<input class="form-check-input d-none lang-list" type="checkbox" id="language-MCQ" name="language_ids[]" value="1" wire:model="language_ids.0" wire:change="addLanguageQuestions(1)">
<label class="form-check-label d-flex flex-nowrap align-items-center rounded-pill btn btn-lg btn-lang-select text-white cursor-pointer" for="language-MCQ">
   <span class="me-2">
       English
   </span>
</label>
<div class="form-check ps-0 me-3">
                            <input class="form-check-input d-none lang-list" type="checkbox" id="language-Kannada" name="language_ids[]" value="2" wire:model="language_ids.1" wire:change="addLanguageQuestions(2)">
                            <label class="form-check-label d-flex flex-nowrap align-items-center rounded-pill btn btn-lg btn-lang-select text-white cursor-pointer" for="language-Kannada">
                                <span class="me-2">
                                    Kannada
                                </span>

                            </label>
                        </div>

Tags: divformlanginputcheckelementselectlanguage
2条回答

您是否尝试过此xpath:

//span[text()='English']

如果您不希望使用text()

//label[@for='language-MCQ']/span

这看起来也不对

select = Select(driver.find_element_by_css_selector("label[for='language-MCQ'] span[class='me-2']"))

请注意,Select仅适用于html Select标记

为了尽量减少任何类型异常的可能性,建议xpath指向交互元素,在这种情况下spanlabel不是交互元素,而是input标记

您可能的xpath解决方案可以是-

.//span[contains(text(),'English')]/ancestor::label/preceding-sibling::input

.//input[@id='language-MCQ']

.//label[contains(@class,'btn-lang-select')]/preceding-sibling::input[@value='1']

像这样的东西应该有用-

element = WebDriverWait(driver, 40).until(expected_conditions.element_to_be_clickable((By.XPATH, ".//span[contains(text(),'English')]/ancestor::label/preceding-sibling::input")))

element.click()

如果上面的XPath不能使用显式等待和预期条件,那么check元素应该在iframe中

相关问题 更多 >