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'