2017-08-09 4 views
0

Ich versuche, ein Python-Skript zu starten, das weiter auf den Button load more klickt, bis es verschwindet. der Code, den ich versuche, wie unten gezeigt:Element nicht anklickbar Selen Python

hier
import csv 
import time 
import re 
from bs4 import BeautifulSoup 
from selenium.common.exceptions import NoSuchElementException 
from selenium import webdriver 
import requests 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

page=requests.get('https://www.killerfeatures.com/mobile/brands').content 
soup1=BeautifulSoup(page,"html5lib") 
brndsbox=soup1.find_all("div",attrs={"class":"brndsbox"}) 
count=0 
brand_link=[] 
for each in brndsbox: 
    x= each.find("span") 
    j=str(x).split('=')[5].split('"><')[0].replace('"',"") 
    brand_link+=["https://www.killerfeatures.com"+j] 


chromedriver=r"D:\MOBILE_JUNE_22_2017\old_files_\price raja mobile\working\chromedriver.exe" 
driver=webdriver.Chrome(chromedriver) 
for url in brand_link: 
    print url 
    driver.get(url) 
    track_count=0 
    while True: 
     try: 

      element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "loadMoreRecords")) ) 
      element.click() 
      print "click", track_count 
      time.sleep(5) 
      track_count+=1 
     except NoSuchElementException: 
      break 

print "complete" 

Problem ist es Fehler als selenium.common.exceptions.WebDriverException: Message: unknown error: Element is not clickable at point (636, 583) eine Idee zeigt, warum es passiert ist. Ich habe bereits explizit gewartet, bis das Element sichtbar ist. danach bekomme ich auch Fehler. Danke im Voraus!

+0

jedes Problem mit Code? –

+0

der Code läuft gut, aber es geht in die Endlosschleife. Es klickt weiter, obwohl das Element nicht vorhanden ist. Nicht sicher, warum es passiert –

Antwort

1

Verwenden Sie JavascriptExecutor. Es wird direkt über JS funktionieren. Es sollte funktionieren. Ich gebe ein Beispiel jedes Element mit JavascriptExecutor

-Code sollte wie unten klicken: -

element=driver.find_element_by_xpath('YOURXPATH') 
driver.execute_script("arguments[0].click();", element) 

Hinweis: - es wird Ihnen helfen, Hoffnung ändern Sie den Locator in

nach Bedarf über Code :)

Verwandte Themen