我正在尝试使用 python 和 Selenium 单击网站上的滑块/复选框,但遇到了很多困难。我可以简单地通过 ID (1369) 找到该元素,然后单击它,不用担心,除了 ID 号会随着时间的推移而动态变化,因此它们对我来说几乎毫无用处。
我还尝试按类、XPath 等查找元素,并使用 Stack Overflow 上发布的许多问题作为参考来单击它,但没有成功,因为我的场景中的 HTML 代码似乎存在一些差异,这阻止了我正在进步。任何帮助将不胜感激,谢谢!
将 HTML 引用为文本:
<div class="f-box vcbox">
<span class="text-item box-item">Single date</span>
<div id="1369" class="checkbox checbox-switch switch-primary ">
<label>
<em class="fake-input "></em>
<span>
::before
</span>
</label>
</div>
预先知道 ID 时有效的代码:
driver.find_element(By.ID, "1369").click()
尚未生效的代码:
driver.find_element(By.CSS_SELECTOR, 'em.checkbox checbox-switch switch-primary').click()
driver.find_element(By.CSS_SELECTOR, 'div.checkbox.checbox-switch.switch-primary').click()
driver.find_element(By.XPATH, "//span[contains(.,'Single date')]").click()
您需要确保提供正确的类名称。您的类名“checkbox-switch”似乎有一个拼写错误。它应该是“复选框开关”。另外,该元素不是“checkbox”类的子元素,因此您的 CSS 选择器将不起作用。你可以尝试这样的事情:
driver.find_element(By.CSS_SELECTOR, 'div.checkbox.checkbox-switch.switch-primary').click()
对于 XPath 方法,您可以尝试以下方法:
driver.find_element(By.XPATH, "//div[contains(@class, 'checkbox') and contains(@class, 'checkbox-switch') and contains(@class, 'switch-primary')]").click()
这些应该有效。