【问题标题】:Can I tick a checkbox using BeautifulSoup / Selenium?我可以使用 BeautifulSoup / Selenium 勾选复选框吗?
【发布时间】:2020-09-10 13:51:49
【问题描述】:

我正在学习使用 SeleniumBeautifulSoup 并且正在努力解决以下问题:

我有一个产品代码列表:

['1242737-011', '4232345-015', '5673845-013']

为此,我需要勾选以下 html 代码中的复选框。所以在这种情况下,只有第一个复选框会被选中 (1242737-011)

<tr class="dividebelow">
    <td>&nbsp;&nbsp;&nbsp;1242737-011&nbsp;&nbsp;</td>
    <td>x small</td>
    <td>16</td>
    <td>21</td>
    <td>0</td>
    <td>0</td>
    <td>

        <input class="select_products__product_table_1242737_checkbox select_products__variants_checkbox" name="variants" value="11866208" type="checkbox">

    </td>
</tr>

    <tr class="dividebelow">
    <td>&nbsp;&nbsp;&nbsp;1242737-012&nbsp;&nbsp;</td>
    <td>small</td>
    <td>36</td>
    <td>65</td>
    <td>1</td>
    <td>0</td>
    <td>

        <input class="select_products__product_table_1242737_checkbox select_products__variants_checkbox" name="variants" value="11866209" type="checkbox">

    </td>
</tr>                      

知道如何做到这一点吗?非常感谢!

【问题讨论】:

  • 发布网址会有帮助
  • 它在私人服务器上:(
  • 如果你想勾选复选框,那么你必须使用 Selenium 的功能,而不是 BeautifulSoup。阅读Selenium documentation。最终,您将不得不使用 requests 将表单发送到服务器 - 不使用 Selenium。

标签: python html selenium beautifulsoup selenium-chromedriver


【解决方案1】:

Selenium有很多功能可以搜索元素并点击查看。

当你想使用复杂的xpath时,你可以使用find_element_by_name(name)find_element_by_xpath(...)


带有三个复选框的页面示例代码

https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_checkbox

import selenium.webdriver

url = 'https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_checkbox'

#driver = selenium.webdriver.Chrome()
driver = selenium.webdriver.Firefox()
driver.get(url)

# checkboxes are in <iframe> so I have to switch frame
driver.switch_to.frame(0)

# click checkboxes using names
for name in ["vehicle1", "vehicle2", "vehicle3"]:
    items = driver.find_element_by_name(name)
    #items = driver.find_element_by_xpath(f'//input[@name="{name}"]')
    items.click()

# click "Submit"
#button = driver.find_element_by_xpath('//input[@type="submit"]')
button = driver.find_element_by_xpath('//input[@value="Submit"]')
button.click()        

顺便说一句: BeautifulSoup 将无用,因为它无法更改网络浏览器中的复选框并单击按钮将其发送到服务器。

【讨论】:

    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 2011-11-28
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2013-09-01
    相关资源
    最近更新 更多