这是我的代码(在Python中):
driver=webdriver.Chrome('/Users/Documents/chromedriver')
driver.get('http://comprasnet.gov.br/acesso.asp?url=/livre/Pregao/ata0.asp')
#FIRST PAGE
driver.switch_to.frame('main2')
driver.find_element_by_name('dt_ini_sessao').send_keys('18/04/2018')
driver.find_element_by_name('dt_fim_sessao').send_keys('18/04/2018')
driver.find_element_by_name('ok').click()
直到这里很好,代码运行顺利。但是当我到达第二页时,我无法点击我想要的链接。
#SECOND PAGE
driver.find_element_by_xpath('//html/body/table[1]/tbody/tr/td[2]/table[2]/tbody/tr[6]/td[1]/a').click()
有人可以帮忙吗?
答案 0 :(得分:1)
您可以使用find_elements_by_tag_name
代替。它将为您提供包含.click方法的标记a
的填充列表。
以下是工作代码示例。
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://comprasnet.gov.br/acesso.asp?url=/livre/Pregao/ata0.asp')
#FIRST PAGE
driver.switch_to.frame('main2')
driver.find_element_by_name('dt_ini_sessao').send_keys('18/04/2018')
driver.find_element_by_name('dt_fim_sessao').send_keys('18/04/2018')
driver.find_element_by_name('ok').click()
for elem in driver.find_elements_by_tag_name('a') :
if elem.text == "3112017" :
elem.click()
答案 1 :(得分:1)
如果要遍历第二页上第一个表格行的所有链接,可以使用以下代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome('/Users/Documents/chromedriver')
driver.get('http://comprasnet.gov.br/acesso.asp?url=/livre/Pregao/ata0.asp')
#FIRST PAGE
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_name("main2")))
driver.find_element_by_name('dt_ini_sessao').send_keys('18/04/2018')
driver.find_element_by_name('dt_fim_sessao').send_keys('18/04/2018')
driver.find_element_by_name('ok').click()
#SECOND PAGE
links = [link.get_attribute("href") for link in WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//td[1]/a")))]
for link in links:
driver.get(link)
# Do something on each page
或
#SECOND PAGE
links_count = len(WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//td[1]/a"))))
for index in range(links_count):
WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//td[1]/a")))[index].click()
# Do something on each page
driver.get('http://comprasnet.gov.br/acesso.asp?url=/livre/Pregao/ata0.asp')
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_name("main2")))
driver.find_element_by_name('dt_ini_sessao').send_keys('18/04/2018')
driver.find_element_by_name('dt_fim_sessao').send_keys('18/04/2018')
driver.find_element_by_name('ok').click()