Selen kann nicht klicken Sie auf element, weil andere element verschleiert
Set-up
Bin ich mit Python 3.x und Selen, füllen Sie ein Abfrage-Feld und klicken anschließend auf den suchen-button,
# element containing the product search bar and buttons
search_area = el_id('Products').find_element_by_class_name('searchArea')
# insert name of file to be duplicated
name_field = search_area.find_element_by_xpath("//input[@type='text']")
name_field.clear()
name_field.send_keys('to_be_duplicated')
# click search button
search_area.find_element_by_xpath('span/a[1]').click()
wo el_id(x) = browser.find_element_by_id(x)
.
Problem
Ausführen der obige code gibt die folgende Fehlermeldung,
ElementClickInterceptedException: Element <a class="button button-fleft searchButton" href="#"> is not clickable at point (577.6166763305664,225.06666564941406) because another element <div class="blockUI blockOverlay"> obscures it
Kann ich das lösen dieser Fehler durch das einfügen eines hart warten Sie, bevor Sie packte und auf den button, so
# click search button
time.sleep(1)
search_area.find_element_by_xpath('span/a[1]').click()
Sondern ich löse es anders, so folgte ich diese Antwort und habe die folgenden,
# click search button
search_button = search_area.find_element_by_xpath('span/a[1]')
WebDriverWait(driver, 10).until_not(EC.visibility_of_element_located((By.XPATH,
"//*[@id="Products"]/tbody/tr[1]/td/div/input")))
search_button.click()
Aber ich habe genau den gleichen Fehler.
Ich habe auch versucht diese Antwort, aber der gleiche Fehler.
Wie löse ich dieses?
Bitte geben Sie eine minimale reproduzierbare Beispiel
Möglich, Duplikat der Element MyElement ist nicht anklickbar am Punkt (x, y)... Andere element, Sie empfangen klicken
Dank DebanjanB! In der end-nr.5 haben es geschafft!
Möglich, Duplikat der Element MyElement ist nicht anklickbar am Punkt (x, y)... Andere element, Sie empfangen klicken
Dank DebanjanB! In der end-nr.5 haben es geschafft!
wait.until(EC.invisibility_of_element_located((By.XPATH, "//div[@class='blockUI blockOverlay']")))
und dann el_xp("//input[@value='Save']").click()
.InformationsquelleAutor LucSpan | 2018-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Möglichkeiten, dies zu tun, eine der Möglichkeiten ist durch Javascript Testamentsvollstrecker.
Könnte man sagen:
Diese Weise können Sie verhindern, dass der div mit der
class = 'blockUI blockOverlay'
und Ihr element kann angeklickt werden, wenn ich richtig bin.
InformationsquelleAutor Anand
Folgende nr.5 DebanjanB Antwort, ich löste es, indem was bedeutet, den code zu warten, für die temporäre überlagerung zu verschwinden, bevor Sie versuchen, klicken Sie auf,
InformationsquelleAutor LucSpan