Reputation: 995
Using selenium, I would like to have a result of an click action on an element in html (HTML4).
The dom in the html is like this
<A HREF="javascript:open_login_page();">
<IMG NAME="login_button" SRC="hoge.jpg" alt="login"></A>
It seems my Python script successfully obtains the element.
Using the obtained element a_element
,
a_element.get_attribute('href')
returns
javascript:open_login_page();
However, a_element.click()
raises an error.
How can I have the result?
The expected result is to have another window popup.
Upvotes: 0
Views: 1282
Reputation: 29362
There are basically 4 ways to click in Selenium.
I will use this xpath
//IMG[@NAME='login_button']//parent::A
Code trial 1 :
time.sleep(5)
driver.find_element_by_xpath("//IMG[@NAME='login_button']//parent::A").click()
Code trial 2 :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//IMG[@NAME='login_button']//parent::A"))).click()
Code trial 3 :
time.sleep(5)
button = driver.find_element_by_xpath("//IMG[@NAME='login_button']//parent::A")
driver.execute_script("arguments[0].click();", button)
Code trial 4 :
time.sleep(5)
button = driver.find_element_by_xpath("//IMG[@NAME='login_button']//parent::A")
ActionChains(driver).move_to_element(button).click().perform()
Imports :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
PS : Please check in the dev tools
(Google chrome) if we have unique entry in HTML DOM
or not.
Steps to check:
Press F12 in Chrome
-> go to element
section -> do a CTRL + F
-> then paste the xpath
and see, if your desired element
is getting highlighted with 1/1
matching node.
Upvotes: 2