为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Selenium 和 Python 在 https://www.shopdisney

如何使用 Selenium 和 Python 在 https://www.shopdisney

HUX布斯 2023-03-08 10:21:39
我一直在尝试使用 selenium 和 python 单击此网页上的“创建帐户”按钮,但 python 似乎无法找到该元素。这是我当前的代码:from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get("https://www.shopdisney.com/merch-pass/product-selection/arendelle-castle-collection-from-frozen")time.sleep(12)accountcreate = driver.find_element_by_class_name ('btn-group btn-group-create-account ng-scope')accountcreate.click()每次我运行它时,chrome 都会打开网页,但它不会点击按钮,我会收到以下回复:  File "skit.py", line 8, in <module>    link = driver.find_element_by_class_name ('btn-group btn-group-create-account ng-scope')  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 564, in find_element_by_class_name    return self.find_element(by=By.CLASS_NAME, value=name)  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element    return self.execute(Command.FIND_ELEMENT, {  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute    self.error_handler.check_response(response)  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response    raise exception_class(message, screen, stacktrace)selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".btn-group btn-group-create-account ng-scope"}  (Session info: chrome=83.0.4103.97)我已尝试使用不同的方法来识别元素,例如 XPath、css 等,但我仍然无法找到它并单击它。我相信它与 Iframe 有关,但我不完全确定。有谁知道如何解决这个问题?谢谢!
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

带有创建帐户文本的链接位于 中,<iframe>因此您必须:


driver.get("https://www.shopdisney.com/merch-pass/product-selection/arendelle-castle-collection-from-frozen")

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"disneyid-iframe")))

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Create an Account"))).click()

使用CSS_SELECTOR:


driver.get("https://www.shopdisney.com/merch-pass/product-selection/arendelle-castle-collection-from-frozen")

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name='disneyid-iframe']")))

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn.btn-secondary.ng-isolate-scope"))).click()

使用XPATH:


driver.get("https://www.shopdisney.com/merch-pass/product-selection/arendelle-castle-collection-from-frozen")

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@name='disneyid-iframe']")))

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[text()='Create an Account']"))).click()

注意:您必须添加以下导入:


from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC

浏览器快照:

//img1.sycdn.imooc.com//6407f1880001d54313620765.jpg

查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信