尝试使用Python和Selenium单击滑块/复选框

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

我正在尝试使用 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>

参考网站上的HTML代码

预先知道 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()
python selenium-webdriver
1个回答
0
投票

您需要确保提供正确的类名称。您的类名“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()

这些应该有效。

© www.soinside.com 2019 - 2024. All rights reserved.