我正在使用Selenium和python进行网页抓取以及我用来测试此link
的页面但问题是我无法处理下拉动态内容,这里出现了问题
在选择状态时,城市根据状态加载,据我所知,有些Php和js在后端。
所以,我在网上搜索并提供了一个等待一段时间的解决方案,请使用此link作为参考。
以下是我的代码的一部分
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
chrome_path = r"E:\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get("http://www.blooddonors.in")
select = Select(driver.find_element_by_xpath('/html/body/table[3]/tbody/tr/td[2]/table[1]/tbody/tr/td/form/table/tbody/tr[2]/td[1]/select'))
select.select_by_visible_text('Tamil Nadu')
driver.implicitly_wait(60)
drop = Select(driver.find_element_by_xpath('//*[@id="div_city"]/select'))
select.select_by_visible_text('Coimbotore')
我正在使用Windows系统,我尝试使用CMD。它不需要等待功能,没有它就可以正常工作。
我面临的错误是:
raise NoSuchElementException("Could not locate element with visible text: %s" % text)
selenium.common.exceptions.NoSuchElementException: Message: Could not locate element with visible text: Coimbotore
但他们实际上是他们的。
如果有人可以帮我解决问题,那就太棒了,我可以继续下一步。
谢谢
答案 0 :(得分:0)
Selenium提供了一个select类,可用于从下拉菜单中获取元素。
select = Select(driver.find_element_by_id('city'))
select.select_by_value('430') #search by value, coimbotore is 430
答案 1 :(得分:0)
要选择 Tamilnadu
,然后选择 Coimbotore
,您可以使用以下代码块:
driver.get("http://www.blooddonors.in")
select = Select(driver.find_element_by_name('select'))
select.select_by_visible_text('Tamil Nadu')
drop = Select(driver.find_element_by_name('city'))
city_option = WebDriverWait(driver, 5).until(lambda x: x.find_element_by_xpath("//select[@name='city']/option[text()='Coimbotore']"))
city_option.click()
答案 2 :(得分:0)
当您仍在尝试处理没有drop
选项的第一个下拉列表(select
)时,您的第二个下拉列表定义为"Coimbotore"
只需替换
drop = Select(driver.find_element_by_xpath('//*[@id="div_city"]/select'))
select.select_by_visible_text('Coimbotore')
与
drop = Select(driver.find_element_by_xpath('//select[@name="city" and count(option) > 1]'))
drop.select_by_visible_text('Coimbotore')