Python:无法找到element:selector

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

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

from selenium import webdriver
browser = webdriver.Chrome('/usr/local/bin/chromedriver')
browser.get('xxx')
browser.implicitly_wait(5)

button = browser.find_element_by_css_selector('#softGateBox > div.button_softgate > a')
button.click()

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

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

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

python google-chrome
1个回答
1
投票

这个页面几乎没有问题

  • 元素在<iframe>内,所以你必须找到<iframe>switch_to_frame()才能搜索元素
  • <iframe>在外部<iframe>所以首先你必须找到外部<iframe>switch_to_frame()开始搜索内部<iframe>
  • 在小型监视器元素上是不可见的,因此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:

页面上可以有其他qazxsw poi,所以你不能直接做qazxsw poi。

内部框架有<iframe>但每次加载页面时它都会改变,所以你不能做selector('iframe')

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