硒无法在iframe中找到字典元素

亚当·戴维斯

Selenium不可思议。我正在尝试使用它来“填写”网络表单,以便最终我可以在Python中以字典的形式获得结果。到目前为止,我有

from selenium.webdriver.common.keys import Keys
from time import sleep

driver = webdriver.Chrome()
driver.get("https://my.crawley.gov.uk/en/service/check_my_bin_collection?accept=yes&consentMessageIds[]=24")
sleep(5)
assert "Check bin collections" in driver.title
elem = driver.find_element_by_id('PostcodeSearch')
elem.clear()
elem.send_keys("RH10 7AB")
elem.send_keys(Keys.RETURN)
driver.close()

但是无论我选择哪种方法,我都在努力获取页面上的元素

DebanjanB

邮政编码字段内的<iframe>,所以你必须:

  • 诱导WebDriverWait获得所需的帧并切换到该帧

  • 诱导WebDriverWait使所需的元素可单击

  • 您可以使用以下定位策略之一

  • 使用CSS_SELECTOR

    driver.get('https://my.crawley.gov.uk/en/service/check_my_bin_collection?accept=yes&consentMessageIds[]=24')
    elem = WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[title='Check bin collections']")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#PostcodeSearch")))
    elem.send_keys("RH10 7AB")
    
  • 使用XPATH

    driver.get("https://my.crawley.gov.uk/en/service/check_my_bin_collection?accept=yes&consentMessageIds[]=24")
    elem = WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@title='Check bin collections']")))
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='PostcodeSearch']")))
    elem.send_keys("RH10 7AB")
    
  • 注意:您必须添加以下导入:

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

爬虫


参考

您可以在以下位置找到相关的讨论:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章