python - 元素不可交互的硒
问题描述
我正在尝试查看耐克网上商店,但我已经尝试了所有方法并进行了搜索,但找不到答案。
https://www.nike.com/nl/nl/checkout/tunnel
我有:
driver.find_element_by_xpath('//button[@id="qa-guest-checkout-mobile"]').click()
<button id="qa-guest-checkout-mobile" aria-label="Guest Checkout"
class="ncss-btn-accent u-rounded u-full-width ncss-brand u-uppercase pt3-sm pt2-lg pr5-sm pb3-sm pb2-lg pl5-sm fs14-sm d-lg-h">
<span class="d-sm-ib va-sm-m mr1-sm">Afrekenen als bezoeker</span></button>
我曾尝试使用按 id、css 等查找,但它不起作用。我在这里做错了什么?当我打印元素时,我只得到 1 个元素,然后我没有收到错误。
File "C:\Users\X\OneDrive\Desktop\SN\NA.py", line 23, in <module>
test = driver.find_element_by_xpath('//button[@id="qa-guest-checkout-mobile"]').click()
File "C:\Users\X\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\X\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\Users\X\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\X\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable
(Session info: chrome=74.0.3729.131)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.17134 x86_64)
解决方案
经过大量搜索后,我找到了这个答案的帖子,并且能够制作这个代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Chrome()
browser.get('https://www.nike.com/nl/nl/checkout/tunnel')
element = WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, "//div/button[@id='qa-guest-checkout-mobile']")))
browser.execute_script("arguments[0].click();", element)
哪个成功点击了按钮。出于某种原因,您必须使用 javascript 强制单击按钮...
推荐阅读
- testing - .NetCore 和 KAFKA 的测试管道策略
- sql - 使用连接到其他表来更新 Oracle 中的 XML 元素
- cluster-computing - 如何对具有多个属性的数据集使用 DBSCAN 聚类算法?
- amazon-web-services - AWS 访问密钥和 IAM 用户
- python-3.x - 使用 mpi4py 运行 sympy dsolve 的示例有哪些?
- css - 断言每个选定的 div 元素
- python - 在matlab 2014a中找到最小值的滑动窗口
- git - 维护生产和开发特性集 - ant + git
- java - 未调用访问者中的方法
- opencv - 我应该在调整大小之前使用 PyrDown 以获得更好的结果吗?