Python:无法找到element:selector

时间:2017-11-28 18:57:27

标签: python google-chrome

我尝试打开浏览器并使用python脚本单击按钮 我的代码:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#softGateBox > div.button_softgate > a"}

网站打开。它等了5秒然后我看到了错误:

{{1}}

有什么不对?我使用chrome检查按钮,然后执行右键单击并单击复制选择器。

1 个答案:

答案 0 :(得分:1)

此页面几乎没有问题

  • 元素位于<iframe>内,因此您必须先找到<iframe>switch_to_frame()才能搜索元素
  • <iframe>位于外部<iframe>内,因此在您开始搜索内部<iframe>
  • 之前,首先必须找到外部switch_to_frame()<iframe>
  • on small monitor元素是不可见的,因此Selenium可以单击它。您必须将页面滚动到元素,然后才能单击它。

from selenium import webdriver

browser = webdriver.Chrome() #'/usr/local/bin/chromedriver')

browser.get('https://www.facebook.com/SparColruytGroup/app/300001396778554?app_data=DD722A43-C774-FC01-8823-8016BFF8F0D0')
browser.implicitly_wait(5)

iframe = browser.find_element_by_css_selector('#pagelet_app_runner iframe')
browser.switch_to_frame(iframe)

iframe = browser.find_element_by_css_selector('#qualifio_insert_place iframe')
browser.switch_to_frame(iframe)

button = browser.find_element_by_css_selector('#softGateBox > div.button_softgate > a')
browser.execute_script("arguments[0].scrollIntoView(true);", button)

button.click()

BTW:

页面上可以有其他<iframe>,因此您无法直接执行selector('iframe')

内部框架有id但每次加载页面时都会更改,因此您无法selector('iframe#some_uniqe_id')