通过python selenium chrom单击按钮

2024-03-28 21:06:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想点击按钮“ja ik ga akkoord”的网址anwb.nl公司与Python硒铬。我已经复制了相对xpath,但是当我使用它时,我总是得到NoSuchElementException。还有身份证、姓名等没有运气

我从以下几点开始:

   from selenium import webdriver
   from selenium.webdriver.chrome.options import Options
   options = Options()
   driver = webdriver.Chrome(options=options)
   driver.get('https://anwb.nl')

当我检查页面时,按钮的xpath会给出:

   //*[@id="accept default level"]

当我把它和…一起使用时,我得到了NoSuchElementException 按钮代码为:

   <button class="btn-decide_link-internal" type="button"
   name="save"
   id="accept default level"> ==$0
   Ja, ik ga akkoord</button>

我尝试了id(接受def…),name(保存),但都没有使用

总的来说我真的很想了解如何解释网页代码,总的来说可以解决将来的问题。你知道吗


Tags: fromimportidseleniumnlbutton按钮xpath
2条回答

有一个iframe。归纳WebDriverWait并首先切换到帧,然后单击按钮。你知道吗

EC.frame\u to \u be \u available \u and \u switch \u to \u it.(EC.frame\u to \u be \u available \u和\u切换到它。)()

EC.element可点击()

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
driver = webdriver.Chrome(options=options)
driver.get('https://anwb.nl')
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.TAG_NAME,"iframe")))
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID,"accept default level"))).click()

文本为Ja,ik ga akkoord的元素在<iframe>内,因此您必须:

  • 诱导WebDriverWait,使所需的帧可用,然后切换到。你知道吗
  • 诱导WebDriverWait,使所需的元素可单击。你知道吗
  • 您可以使用下列Locator Strategies之一:

    • 使用CSS_SELECTOR

      driver.get("https://www.anwb.nl/");
      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src*='anwb']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn-decide_link-internal"))).click()
      
    • 使用XPATH

      driver.get("https://www.anwb.nl/");
      WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[contains(@src, 'anwb')]")))
      WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//button[@id='accept default level']"))).click()
      
    • 注意:必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      
    • 浏览器快照:

anwb

Here you can find a relevant discussion on Ways to deal with #document under iframe

相关问题 更多 >