python - 在 Python 中使用 Selenium 单击网页中的所有按钮
问题描述
我正在尝试单击网页上的所有按钮。我希望能够全部点击。 网页 我可以使用 css 选择器单击其中一个
browser.find_element_by_css_selector('li.clickable_area:nth-child(1) > div:nth-child(3)').click()
这些是 5 个按钮的 CSS 选择器
5 个按钮遵循以下模式:
按钮 1:li.clickable_area: nth - child(1) > div:nth - child(3)
按钮 2:li.clickable_area: nth - child(2) > div:nth - child(3)
按钮 3:li.clickable_area: nth - child(3) > div:nth - child(3)
按钮 4:li.clickable_area: nth - child(4) > div:nth - child(3)
按钮 5:li.clickable_area: nth - child(5) > div:nth - child(3)
我如何使用 css 选择器单击它们而不为每个选择器编写代码?
解决方案
您可以使用循环遍历并单击按钮的数量。
number_of_buttons = 5
for x in range(number_of_buttons):
button = browser.find_element_by_css_selector("li.clickable_area:nth-child(" + str(x+1) + ") > div:nth-child(3)")
button.click()
如果你想点击所有,li(x) > div:nth-child(3)
那么你可以使用下面的。
number_li_elems=len(WebDriverWait(browser,30).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "li.clickable_area"))))
for x in range(number_li_elems):
# you have to get the element by index every time, otherwise you will get StaleElement Exception
button = browser.find_element_by_css_selector("li.clickable_area:nth-child(" + str(x+1) + ") > div:nth-child(3)")
button.click()
推荐阅读
- php - Laravel 7:尝试获取非对象的属性“product_name”
- java - 如何使用转换后的值执行查询
- .htaccess - htaccess 主域子文件夹的别名
- botframework - Azure bot 服务 Web 应用程序 bot 未找到资源
- c# - 为什么我的播放器在与此平台碰撞时速度会大幅下降
- twilio - 是否可以从电脑键盘向 IVR 发送 DTMF 音?
- wpf - 无法使 userControl 中的 TextBox 自动对焦
- arrays - if -else if- else 语句未按预期工作
- rust - 为什么 rust 调试 trait 的实现使用 Formatter<'_> 类型省略
- c# - 找不到要运行的项目。确保项目存在于 D:\c# 中,或使用 --project 将路径传递给项目