【问题标题】:Selecting a Button with selenium选择一个带有硒的按钮
【发布时间】:2019-10-15 21:02:57
【问题描述】:

我是 selenium 的新手,我正在尝试弄清楚如何模拟 onclick, 这是我在检查 html 源代码时在源代码中看到的:

 <div class="btn btn-sm btn-primary" id="bbb_view_results" onclick="showResults();" style="">View Results</div>

我尝试了以下但没有任何效果:

driver.find_element_by_css_selector("div.btn.btn-sm.btn-primary#bbb_view_results[onclick*='showResults()']").click()
driver.find_element_by_xpath("/html/body/div[36]/div[1]/div[2]/div[3]/table/tbody/tr/td[2]/div[1]").click()
driver.find_elements_by_class_name("btn btn-sm btn-primary.bbb_view_results").click()
driver.find_element_by_css_selector('div.btn btn-sm btn-primary').click()
driver.find_element_by_id('bbb_view_results').click()

几乎所有的错误消息都是 NoSuchElementException。 一些错误信息:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="bbb_view_results"]"}
  (Session info: chrome=77.0.3865.90)

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[text()='View Results']"}
  (Session info: chrome=77.0.3865.90)
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"div.btn btn-sm btn-primary"}

【问题讨论】:

标签: python selenium-webdriver


【解决方案1】:
driver.find_element_by_class_name('btn.btn-sm.btn-primary').click()

还有

driver.find_element_by_id('bbb_view_results').click()

应该可以正常工作。 但也许您需要更改为其他框架,您可以发布完整的 page_source 或 url 吗?


**更新:**

在看到你想要的 scraping 数据的 url 之后;

您需要切换框架才能点击按钮。 加载整个数据后单击它的正确方法是使用模块:

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait

类似:

WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.ID, 'instance-283000-header')))

但是,我无法让它们在那里工作 - 所以我使用 sleep 进行演示。

from selenium import webdriver
from time import sleep

url = 'https://www.flexmls.com/cgi-bin/mainmenu.cgi?cmd=url+other/createlink/link_receiver.html&' \
      'no_html_header=true&i=rgsmmct2qgk,12'
driver = webdriver.Chrome()
driver.get(url)
driver.switch_to.frame('publiclinkpanel')
sleep(10)
driver.find_element_by_class_name('btn.btn-sm.btn-primary').click()
sleep(10)
print(driver.page_source)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 2013-04-13
  • 2020-10-15
相关资源
最近更新 更多