2017-06-26 5 views
-1

Ich habe eine kleine Aufgabe von Daten aus https://www.carecredit.com/doctor-locator/ schaben. Ich kann das Ankreuzkästchen nicht mit meinem Skript ausführen.Klicken Sie auf Kontrollkästchen mit Python Selen

ich tue

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.common.exceptions import NoSuchElementException 
from selenium.common.exceptions import StaleElementReferenceException 
driver = webdriver.Chrome() 
driver.get('https://www.carecredit.com/doctor-locator/') 
driver.find_element_by_xpath("//select[@id='dl- 
      profession']/option[@value='9']").click() 
driver.find_element_by_xpath("//*[@id='specialty-106']").click() 

und immer Fehler wie

Traceback (most recent call last): 
    File "<pyshell#24>", line 1, in <module> 
    driver.find_element_by_xpath("//*[@id='specialty-106']").click() 
    File "C:\Python27\lib\site-packages\selenium-2.46.0-py2.7.egg\selenium\webdriver\remote\webelement.py", line 70, in click 
    self._execute(Command.CLICK_ELEMENT) 
    File "C:\Python27\lib\site-packages\selenium-2.46.0-py2.7.egg\selenium\webdriver\remote\webelement.py", line 404, in _execute 
    return self._parent.execute(command, params) 
    File "C:\Python27\lib\site-packages\selenium-2.46.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 195, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium-2.46.0-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 170, in check_response 
    raise exception_class(message, screen, stacktrace) 
WebDriverException: Message: unknown error: Element <input type="checkbox" id="specialty-106" name="Specialty[]" value="106"> is not clickable at point (281, 554). Other element would receive the click: <label for="specialty-106"></label> 
    (Session info: chrome=58.0.3029.110) 
    (Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 6.1.7600 x86_64) 
+0

Gibt es in Ihrer Xpath-Zeichenfolge tatsächlich einen Zeilenumbruch? Wenn ich Ihren xpath auf dieser Seite versuche, scheint es zu funktionieren, solange zwischen 'dl-' und 'profession 'kein Leerzeichen ist. – FamousJameous

+0

Anstatt danke, sollten Sie eine Frage in Ihren Beitrag aufgenommen haben. Ich habe den Dank entfernt, war mir aber nicht sicher, ob Sie eine Frage stellen wollten. "Wenn ich auf Perl umstelle, wird Selen dasselbe Problem haben?" oder wenn du etwas anderes fragen willst. Also überlasse ich es Ihnen, einen passenden Fragesatz zu finden, bearbeiten Sie Ihren Beitrag und fügen Sie ihn hinzu. – Anthon

Antwort

0

ist die Antwort auf Ihre Frage:

Dieser Codeblock öffnet die URL https://www.carecredit.com/doctor-locator, klicken Sie auf Profession Dropdown, wählen Weight Loss und schließlich das Kontrollkästchen Weight Loss Surgery.

from selenium import webdriver 
from selenium.webdriver.support.ui import Select 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
driver = webdriver.Chrome(executable_path= r"C:\\Utility\\BrowserDrivers\\chromedriver.exe") 
driver.get('https://www.carecredit.com/doctor-locator/') 
select = Select(driver.find_element_by_id('dl-profession')) 
select.select_by_value("9") 
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='specialty-106']//following::label[1]"))) 
driver.find_element_by_xpath("//input[@id='specialty-106']//following::label[1]").click() 

Lassen Sie mich wissen, wenn dies Ihre Frage beantwortet.

+0

Danke Debanjan Es funktioniert. – jnanchak

+0

Gute Neuigkeiten !!! Ich bin froh, Ihnen helfen zu können. Vielen Dank – DebanjanB

0

Die Zurückverfolgungs enthält eine sehr klare Erklärung dessen, was falsch ist.

WebDriverException: Message: unknown error: Element is not clickable at point (281, 554). Other element would receive the click:

Sie müssen möglicherweise eine Verzögerung zwischen Ihren zwei Klicks hinzufügen, um auf die Aktualisierung des DOM zu warten, damit das Element anklickbar ist. Hier

+0

gibt es eigentlich keinen Platz zwischen dl- und Beruf aber trotzdem funktioniert es nicht an meinem Ende. Ich habe implizit 3 Sekunden gewartet aber es funktioniert nicht. – jnanchak

+0

Ich habe versucht, zu warten, indem ich myElem = WebDriverWait (Treiber, 10) .until (EC.presence_of_element_located ((By.ID, 'specification-106')))) , aber immer noch nicht klicken kann. – jnanchak

Verwandte Themen