【问题标题】:Selenium access span on menuitem not selectable菜单项上的硒访问范围不可选择
【发布时间】:2021-02-08 18:58:44
【问题描述】:

我在 Python 上使用 Selenium 进行抓取。

基于javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite,我尝试访问第五个菜单项的第二个元素。按 id 选择很好,但菜单项似乎不可访问。 html

<li class="k-item k-state-default" role="menuitem">
   <span class="k-link">
      <span class="undefined "i="">Budynki</span></span></li>`

代码试验:

dataset_drop_down_element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//*[@title = 'Informacja o obiektach mapowych']")))`

错误:

 dataset_drop_down_element = Select(dataset_drop_down_element)
 Select only works on <select> elements, not on <span>

 dataset_drop_down_element.send_keys('Budynek')
 Message: element not interactable

 driver.find_element_by_xpath('//*[@title="Informacja o obiektach mapowych"]/span[2]').click()
 Message: element not interactable

【问题讨论】:

    标签: python selenium-webdriver web-scraping xpath webdriverwait


    【解决方案1】:

    要点击文本为Budynki的元素,你需要诱导WebDriverWaitelement_to_be_clickable(),你可以使用下面的Locator Strategies

    • 使用XPATH

      driver.get("https://goleniowski.webewid.pl/e-uslugi/portal-mapowy")
      WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, "//span[@title='Informacja o obiektach mapowych']/span"))).click()
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@data-role='popup']//li/span/span[text()='Budynki']"))).click()
      
    • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-23
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2017-05-21
      相关资源
      最近更新 更多