Javascript 使用python selenium单击部分div链接

Javascript 使用python selenium单击部分div链接,javascript,python,selenium,selenium-webdriver,Javascript,Python,Selenium,Selenium Webdriver,我想删除此网站上的一些信息: 我编码进入模拟页面,但一个链接使我崩溃 我不能点击这个链接 我的登录页就是那个 我的代码: from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('

我想删除此网站上的一些信息:

我编码进入模拟页面,但一个链接使我崩溃

我不能点击这个链接

我的登录页就是那个

我的代码:

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--start-maximized')
chrome_options.add_argument('window-size=5000x2500')
webdriver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)

now = DT.now()
periode = str(now.day) + '_' + str(now.month) + '_' + str(now.year)
#url = "https://www.caixabank.es/particular/prestamos-personales/prestamos.html"
url = "https://loc2.caixabank.es/GPeticiones?CANAL=I&DEMO=0&PN=LGN&PE=116&ENTORNO=1&sinCampanya=S&INICIAL_PN=PPP&INICIAL_PE=832&E_COD_LANDING=WGN00645&E_PNMENU=POS&E_PEMENU=6&TEXTO_OPE=prestamoestrellaautoes.txt&IDIOMA=02"
webdriver.get(url)
link = webdriver.find_element_by_partial_link_text('Demostración')
actions = ActionChains(webdriver).click(link)
actions.perform()
time.sleep(5)
webdriver.save_screenshot('sreenshot.png')
webdriver.implicitly_wait(30)
webdriver.switch_to.frame(webdriver.find_element_by_css_selector('#FramesetInferiorInterno > frame:nth-child(2)'))
webdriver.find_element_by_xpath("//a[contains(., 'Aceptar y continuar')]")
webdriver.save_screenshot('sreenshot1.png')
我得到的错误是:

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:8: DeprecationWarning: use options instead of chrome_options


---------------------------------------------------------------------------

NoSuchElementException                    Traceback (most recent call last)

<ipython-input-81-858e6e0c3de3> in <module>()
     29 webdriver.save_screenshot('sreenshot.png')
     30 webdriver.implicitly_wait(30)
---> 31 webdriver.switch_to.frame(webdriver.find_element_by_css_selector('#FramesetInferiorInterno > frame:nth-child(2)'))
     32 #webdriver.switch_to.frame('Cos')
     33 #link = webdriver.find_element_by_partial_link_text('Aceptar y continuar')

/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py in find_element_by_css_selector(self, css_selector)
    596             element = driver.find_element_by_css_selector('#foo')
    597         """
--> 598         return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
    599 
    600     def find_elements_by_css_selector(self, css_selector):

/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py in find_element(self, by, value)
    976         return self.execute(Command.FIND_ELEMENT, {
    977             'using': by,
--> 978             'value': value})['value']
    979 
    980     def find_elements(self, by=By.ID, value=None):

/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params)
    319         response = self.command_executor.execute(driver_command, params)
    320         if response:
--> 321             self.error_handler.check_response(response)
    322             response['value'] = self._unwrap_value(
    323                 response.get('value', None))

/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
    240                 alert_text = value['alert'].get('text')
    241             raise exception_class(message, screen, stacktrace, alert_text)
--> 242         raise exception_class(message, screen, stacktrace)
    243 
    244     def _value_or_default(self, obj, key, default):

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#FramesetInferiorInterno > frame:nth-child(2)"}
  (Session info: headless chrome=72.0.3626.121)
  (Driver info: chromedriver=72.0.3626.121,platform=Linux 4.14.79+ x86_64)

我认为您可能只需要在xpath周围加上括号,而不是括号:

webdriver.find_element_by_xpath("//a[contains(., 'Aceptar y continuar')]")

这一个有效吗?

没有令人遗憾的NoSuchElementException:消息:没有这样的元素:无法定位元素:{method:xpath,selector://a[contains.,'Aceptar y continuar']}所以这确实修复了您的错误,它只是给了您一个新的。找不到链接,因为它位于IFRAME中,因此您必须先切换到它,然后才能定位元素。我认为新错误来自EC.element\u to\u be\u clickable。我认为如果你想这样使用它,你需要定义EC=ExpectedConditions。但是,我认为,如果您只需在导入中添加以下内容,您可能就可以开始了:from selenium.webdriver.support导入预期的\u条件EC@JeffC我试图切换到Iframe。但不起作用。你能发布一个例子吗?网上有很多例子,我相信如果你搜索你能找到一个。现在不要改变问题。问题已经回答了。见我下面的评论。问题还没有解决:我的问题是如何点击链接。我仍然无法得到它。因为你不再得到你发布的错误。。。这目前仍在你的问题中。你需要清理问题中的代码。删除所有注释掉的代码,并将当前使用的代码与当前错误消息一起发布。您需要将框架指定为WebElement。我想你想要的框架可以通过以下方式找到:webdriver.switch_to.framewebdriver.find_element_by_css_selector'framesetsuberiorinterno>frame:nth-child2'