问题描述
我尝试了多种方法,从xpath到链接文本,以获取Selenium来定位下一页"按钮,然后单击直到最后一页,但无法使其正常工作.
I have tried a number of ways, from xpath to link text to get Selenium to locate the "Next Page" button, and then click until the last page, but just couldn't get this to work.
这是我使用xpath的错误:
This is the error that I have using xpath:
没有这样的元素:无法找到元素:{"method":"xpath","selector":"//li [@ class =" next]/a"} (会话信息:chrome = 79.0.3945.88)
no such element: Unable to locate element: {"method":"xpath","selector":"//li[@class="next"]/a"} (Session info: chrome=79.0.3945.88)
代码:
import requests, bs4, time, selenium #import libraries
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver=webdriver.Chrome()
driver.get('https://egov2.manchesternh.gov/Click2GovTX/accountsearch.html')
select=Select(driver.find_element_by_id('searchMethod'))
select.select_by_value('2')
streetName=driver.find_element_by_id('addressName')
time.sleep(1)
streetName.clear()
streetName.send_keys("A")
streetName.send_keys(u'\ue007')
url=driver.current_url
print(url)
driver.get(url)
nxt=driver.find_element_by_xpath('//li[@class="next"]/a')
nxt.click()
time.sleep(1)
推荐答案
要获取找到,然后单击直到需要引导 WebDriverWait 的最后一页,您可以使用以下定位器策略:
To get Selenium to locate the and then click until the last page you need to induce WebDriverWait for the element_to_be_clickable()
and you can use the following Locator Strategies:
-
代码块:
Code Block:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import TimeoutException
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get('https://egov2.manchesternh.gov/Click2GovTX/accountsearch.html')
select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select#searchMethod"))))
select.select_by_value('2')
streetName = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control[name='addressName']")))
streetName.send_keys("A")
streetName.send_keys(u'\ue007')
while True:
try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//p//following::nav[2]//ul//li[@class='next']//a"))).click()
print("Clicked on Next Page »")
except TimeoutException:
print("No more Next Page »")
break
driver.quit()
控制台输出:
Console Output:
Clicked on Next Page »
Clicked on Next Page »
Clicked on Next Page »
Clicked on Next Page »
Clicked on Next Page »
.
.
.
No more Next Page »
这篇关于使用硒单击下一页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!