这是网页 - link。我要爬行(在波斯语中)。当我要点击下一页按钮时,我遇到了问题。 XPath是:
nextpage = '//*[@id="ctl00_ContentPlaceHolder1_ASPxSplitter1_CallbackPaneldgd_dgd_DXPagerBottom"]/a[1]/img'
page = driver.find_element_by_xpath(nextpage)
page.click()
page.click()
后我收到以下错误:
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
有些回答说可能存在重复的XPath,但我在网页的源代码中找不到这样的内容。
完整的代码:
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
driver = webdriver.Chrome(executable_path='./chromedriver')
url = 'http://hmi.mrud.ir/sabaa/SABAA/Home/Default.aspx?strTownship=0101&g=false'
driver.get(url)
time.sleep(10)
nextpage = '//*[@id="ctl00_ContentPlaceHolder1_ASPxSplitter1_CallbackPaneldgd_dgd_DXPagerBottom"]/a[1]/img'
page = driver.find_element_by_xpath(nextpage)
page.click()
感谢。
答案 0 :(得分:1)
在点击元素之前使用以下内容:
driver.execute_script("arguments[0].scrollIntoView(true);", page)
这是滚动到元素。
希望它可以帮到你!
答案 1 :(得分:1)
根据Website
,如果您想点击Next Page Button
,则必须诱导WebDriverWait
WebElement
,以便可以按照以下任一代码块点击nextpage = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(By.XPATH,"//div[@id='ctl00_ContentPlaceHolder1_ASPxSplitter1_CallbackPaneldgd_dgd_DXPagerBottom']/a[@class='dxp-lead dxp-button dxp-bi']/img[@class='dxWeb_pPrev_Aqua']"))
nextpage.click()
,如下所示:
nextpage = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_xpath("//div[@id='ctl00_ContentPlaceHolder1_ASPxSplitter1_CallbackPaneldgd_dgd_DXPagerBottom']/a[@class='dxp-lead dxp-button dxp-bi']/img[@class='dxWeb_pPrev_Aqua']"))
nextpage.click()
或者
$('.item-list').imagesLoaded(function () {
var $grid = $('.item-list');
$grid.isotope({
itemSelector: '.item-list__card',
percentPosition: true,
masonry: {
columnWidth: '.grid-sizer'
}
});
var iso = $grid.data('isotope');
$grid.infiniteScroll({
path: '.navigation a',
append: '.item-list__card',
debug: true,
status: '.infinite-scroll-request',
outlayer: iso
}
);
});