Python selenium查找复选框

2024-10-01 09:28:11 发布

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

我正在尝试查找复选框并单击它。我试过使用:

driver.find_element_by_xpath(("//*[contains(text(), '2+ interchanges')]")).click()

driver.find_element_by_class_name('BpkCheckbox_bpk-checkbox__label__1vrLS BpkCheckbox_bpk-checkbox__label--small__16XBT')

driver.find_element_by_name('2+ interchanges').click()

但是没有运气,总是会出错:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:

你能给我一些建议我该如何找到这个复选框吗

谢谢

最好的

代码如下所示:

<div class="Filter_verticallySpaced__1Sm6F Filter_horizontallySpaced__RwfGp FiltersCheckboxes_colourOnHover__erAw_"> <label class="BpkCheckbox_bpk-checkbox__2yTOQ FiltersCheckboxes_checkboxLine__7IQLY"> <input aria-invalid="false" aria-label="2+ interchanges" checked="" class="BpkCheckbox_bpk-checkbox__input__2qMb7" name="twoPlusStops" type="checkbox"/> <svg class="BpkCheckbox_bpk-checkbox__icon__1KuPa" height="18" style="width: 0.75rem; height: 0.75rem;" viewbox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg"> <path d="M9.4 20c-.5 0-.9-.2-1.3-.5l-5.8-5.1c-.4-.4-.5-1-.1-1.4l1.3-1.5c.4-.4 1-.5 1.4-.1l4 3.5c.2.1.4.1.6 0l9.2-10.5c.4-.4 1-.5 1.4-.1l1.5 1.3c.4.4.5 1 .1 1.4L10.9 19.3c-.4.5-.9.7-1.5.7z"> </path> </svg> <span aria-hidden="true" class="BpkCheckbox_bpk-checkbox__label__1vrLS BpkCheckbox_bpk-checkbox__label--small__16XBT"> 2+ interchanges </span> </label> <span class="BpkText_bpk-text__2NHsO BpkText_bpk-text--sm__345aT FiltersCheckboxes_subText__3aG9- FiltersCheckboxes_block__1ZTpQ FiltersCheckboxes_checkboxIndent__2c49O"> 2 735 $ </span> </div> <div class="Filter_verticallySpaced__1Sm6F Filter_horizontallySpaced__RwfGp FiltersCheckboxes_colourOnHover__erAw_"> <label class="BpkCheckbox_bpk-checkbox__2yTOQ FiltersCheckboxes_checkboxLine__7IQLY"> <input aria-invalid="false" aria-label="1 interchange" checked="" class="BpkCheckbox_bpk-checkbox__input__2qMb7" name="oneStop" type="checkbox"/> <svg class="BpkCheckbox_bpk-checkbox__icon__1KuPa" height="18" style="width: 0.75rem; height: 0.75rem;" viewbox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg"> <path d="M9.4 20c-.5 0-.9-.2-1.3-.5l-5.8-5.1c-.4-.4-.5-1-.1-1.4l1.3-1.5c.4-.4 1-.5 1.4-.1l4 3.5c.2.1.4.1.6 0l9.2-10.5c.4-.4 1-.5 1.4-.1l1.5 1.3c.4.4.5 1 .1 1.4L10.9 19.3c-.4.5-.9.7-1.5.7z"> </path> </svg> <span aria-hidden="true" class="BpkCheckbox_bpk-checkbox__label__1vrLS BpkCheckbox_bpk-checkbox__label--small__16XBT"> 1 interchange </span> </label> <span class="BpkText_bpk-text__2NHsO BpkText_bpk-text--sm__345aT FiltersCheckboxes_subText__3aG9- FiltersCheckboxes_block__1ZTpQ FiltersCheckboxes_checkboxIndent__2c49O"> 2 787 $ </span> </div>

Tags: textnamesvgdivelementfilterlabelclass
2条回答

好吧,我找到了:) 解决方案,我只是添加了等待10秒,然后单击,并更改了xpath

time.sleep(10)
stops_chkbox = driver.find_element_by_xpath('//*[@id="stops_content"]/div/div/div[3]/label').click()

用这个

driver.find_element_by_class_name('BpkCheckbox_bpk-checkbox__label__1vrLS BpkCheckbox_bpk-checkbox__label small__16XBT')

您选择了两个类名作为一个(每个类名之间有一个空格)。 尝试使用以下方法:

driver.find_element_by_class_name('BpkCheckbox_bpk-checkbox__label__1vrLS')

顺便说一下,这个

driver.find_element_by_name('2+ interchanges').click()

正在搜索元素(例如)中的名称,而不是元素中的值。(您的标记没有名称属性)

相关问题 更多 >