【问题标题】:AttributeError: type object 'By' has no attribute 'id' Selenium [duplicate]AttributeError:类型对象'By'没有属性'id'Selenium [重复]
【发布时间】:2022-01-16 06:23:30
【问题描述】:

我正在尝试使用 Selenium 填写下拉表单。我正在尝试通过其 ID 选择下拉元素,但收到此错误:AttributeError: type object 'By' has no attribute 'id' 我收到此行的此错误:element = driver.find_element(By.id('State'))

from lib2to3.pgen2 import driver
from sre_parse import State
from tkinter.tix import Select
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time
# web = webdriver.Chrome(ChromeDriverManager().install())
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://ssg2021.in/citizenfeedback")

time.sleep(2)

element = driver.find_element(By.id('State'))
drp = Select(element)

drp.select_by_visible_text('Chhattisgarh')

【问题讨论】:

  • driver.find_element(By.ID,'State') 这不是 Java。
  • python的相同代码是什么?
  • 刚刚写在评论里。
  • 我也推荐使用 webdriver 等待。
  • 不走运。仍然出现同样的错误。

标签: python selenium selenium-webdriver webautomation


【解决方案1】:
wait=WebDriverWait(driver,30)                                 
driver.get("https://ssg2021.in/citizenfeedback")
element = wait.until(EC.presence_of_element_located((By.ID,"State")))
drp = Select(element)
drp.select_by_visible_text('Chhattisgarh')

等待元素出现,然后按文本选择。

输出:

进口:

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

【讨论】:

    【解决方案2】:

    你可以尝试如下

    select = Select(driver.find_element_by_id('State'))
    
    # select by visible text
    select.select_by_visible_text('Chhattisgarh')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 2018-12-17
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2019-06-08
      相关资源
      最近更新 更多