无法单击“英语”按钮。它说不存在这样的元素。
尝试了以下和选择方法。
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']"))<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>发布于 2021-08-24 09:46:30
您是否尝试过这个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选择标记。
发布于 2021-08-24 11:45:20
为了最小化出现任何类型异常的可能性,建议将xpath指向交互式元素,在本例中,span或label不是交互式元素,而是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中。
https://stackoverflow.com/questions/68905117
复制相似问题