[英]Unable to click on element using Python Selenium
我正在开发一个程序,它将帮助我在窗口右上角的https://www.pcfinancial.ca/的下拉菜单中选择第二个选项。 到目前为止,这是我的代码:
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import ui
driver = webdriver.Chrome()
driver.get('https://www.pcfinancial.ca/');
driver.find_element_by_xpath('//*[@id="lnkSignInOp"]').click() #click on dropdown menu - working
driver.find_element_by_xpath('//*[@id="PCM"]/a').click() #select "pc mastercard" - not working
奇怪的是,我可以使用第一个driver.find_elements_by_xpath(...)
行访问下拉菜单,但是选择第二个选项时出现以下错误。
Traceback (most recent call last):
File "C:\Users\Imad\Documents\Programming\Python\test.py", line 10, in <module>
driver.find_element_by_xpath('//*[@id="PCM"]/a').click() #open up dropdown menu works
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 501, in _execute
return self._parent.execute(command, params)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 308, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
(Session info: chrome=63.0.3239.84)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.16299 x86_64)
谁能帮助我了解发生了什么以及如何解决此问题? 提前致谢!
这是定时问题的经典案例。 打开下拉菜单后,等待菜单链接在WebDriverWait
和element_to_be_clickable
预期条件下可单击:
from selenium import webdriver
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()
wait = WebDriverWait(driver, 10)
driver.get('https://www.pcfinancial.ca/')
driver.find_element_by_xpath('//*[@id="lnkSignInOp"]').click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#PCM a"))).click()
根据WebSite
,linkText PC MasterCard
的WebElement
在<a>
标记内,因此我们将按以下方式构造唯一的xpath
:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.pcfinancial.ca/');
driver.find_element_by_xpath('//*[@id="lnkSignInOp"]').click() #click on dropdown menu - working
driver.find_element_by_xpath("//a[@href='#PCM' and @rel='/re_register/index.html']").click() #click on "PC MasterCard" - now working
print("Clicked on PC MasterCard")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.