2017-12-20 5 views
2

Dies ist die Webseite LINK Ich werde crawlen (auf Persisch). Ich habe ein Problem, wenn ich auf die Schaltfläche für die nächste Seite klicke. Die XPath istPython Selenium Nachricht: Element nicht sichtbar

nextpage = '//*[@id="ctl00_ContentPlaceHolder1_ASPxSplitter1_CallbackPaneldgd_dgd_DXPagerBottom"]/a[1]/img' 
page = driver.find_element_by_xpath(nextpage) 
page.click() 

Nach den page.click() bekam ich folgende Fehlermeldung:

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 

Einige Antworten sagen, es könnte ein Duplikat XPath sein, aber ich konnte nicht so etwas in der Quelle der Webseite finden .

Der vollständige Code:

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() 

Dank.

Antwort

1

folgende Verwendung vor auf das Element klicken:

driver.execute_script("arguments[0].scrollIntoView(true);", page) 

Dieses auf das Element scrollen.

Hoffe es hilft dir!

1

Gemäß der Website, wenn Sie auf das klicken möchten Next Page Button Sie haben WebDriverWait für die WebElement induzieren folgenden entweder des Codeblocks werden klickbare wie folgt:

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() 

Oder

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() 
Verwandte Themen