2013-07-05 14 views
7

Oto link Próbuję kliknij:Kliknięcie linku używając selen przy użyciu Pythona

<a href="#" onclick="OpenAddKeywords();return false;" id="btnAddKeywords">Add Keywords</a> 

Próbowałem kilka opcji (wymienionych poniżej), ale nie działa; jakieś pomysły?

  1. self.br.find_element_by_xpath("//*[@id='btnAddKeywords']").click()
  2. self.br.execute_script("OpenAddKeywords();return false;")

Jest to błąd Mam dla execute_script:

Message: u'Error Message => \'Can\'t find variable: OpenAddKeywords\'\n caused by Request => 

I to jest ten, który mam za xpath:

Message: u'Error Message => \'Unable to find element with xpath \'//*[@id=\'btnAddKeywords\']\'\'\n caused by Request => 
+0

Jak dokładnie nie działały? –

+0

@AlexanderPetrovich dodał błędy :) – Mark

+2

Czy wypróbowałeś 'self.br.find_element_by_id ('btnAddKeywords'). Click()'? Jeśli to nie działa, oznacza to, że możesz nie być na stronie, którą uważasz za swoją. – n1r3

Odpowiedz

3

Możesz spróbować użyć xpath jak poniżej. Działa to dla mnie, ponieważ wykorzystałem ostatni projekt.

driver.find_element_by_xpath("xpath").click() 

Proszę spróbować ...

+0

Właściwie @Mark próbował tego i wspomniał o wyniku w pytaniu; przeczytaj uważnie to pytanie, a następnie odpowiedz. :) –

5

Jak wspomniałem w moim pytaniu here, problem zostanie rozwiązany za pomocą ActionChains klasie; krótki kod jest tutaj:

el = driver.find_element_by_id("someid") 
webdriver.ActionChains(driver).move_to_element(el).click(el).perform() 

Głównym problemem jest to, że w niektórych przypadkach, zwłaszcza gdy masz jakieś kody JavaScript w swojej stronie DOM zmieni i element znalazłeś zanim zostaną staled. "ActionChains" utrzyma go przy życiu w celu wykonywania działań.

+0

@ Mark Mój problem był bardzo podobny do twojego i rozwiązanie Zeinab dla mnie działało – rapvelopment