Python 3.x 找不到具有可见文本的元素

Python 3.x 找不到具有可见文本的元素,python-3.x,selenium-webdriver,Python 3.x,Selenium Webdriver,当选择城市名称时,它必须与列表中输入的校园名称相匹配,并且要选择匹配的名称。下面是代码和屏幕截图 tkt_campus = browser.find_element_by_css_selector('#cityTicketingId') city = WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.ID, 'cityTicketingId'))) city.click() t_city = Select(ci

当选择城市名称时,它必须与列表中输入的校园名称相匹配,并且要选择匹配的名称。下面是代码和屏幕截图

tkt_campus = browser.find_element_by_css_selector('#cityTicketingId')
city = WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.ID, 'cityTicketingId')))
city.click()
t_city = Select(city)
t_city.select_by_visible_text(tkt_city_name.strip())
WebDriverWait(browser, 1)
tkt_campus = city = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'campusTicketingId')))
t_campus = Select(tkt_campus)
t_campus.select_by_visible_text(campus_name.strip())


由于脚本是在命令行上工作的,而不是作为单个脚本,因此webdriver很可能需要等待下拉列表渲染。当您通过命令行逐行插入时,会有一个自然的暂停,但当作为脚本运行时,代码行会立即执行,并在文本呈现为HTML之前检查文本

除了倒数第二行,一切都好。看起来您已经使用过WebDriverWait函数一次:

tkt_campus = browser.find_element_by_css_selector('#cityTicketingId')
city = WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.ID, 'cityTicketingId')))
city.click()
t_city = Select(city)
t_city.select_by_visible_text(tkt_city_name.strip())
WebDriverWait(browser, 1)
tkt_campus = city = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'campusTicketingId')))
t_campus = Select(tkt_campus)

t_campus = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.LINK_TEXT('ELURU'))

t_campus.select_by_visible_text(campus_name.strip())

您能从查看页面添加HTML吗?添加了查看源。。当我运行PythonIDE控制台时,它可以正常工作,但不能直接工作。当脚本一次全部执行时,它不起作用。对吗?对。没错……好的。这是一个非常明显的迹象,表明驱动程序需要等待下拉列表呈现…这应该是一个简单的修复,我会给出一个答案。我们可以声明等待时间(条件),直到它识别出下拉列表生成。获取错误:'str'对象不能在(WebDriverWait(browser,10)调用。直到(EC.presence_of_of_element_located)(.By.LINK_TEXT(校园名称)