情景:
问题: - 我想点击此弹出窗口右上角的“X”关闭它。
尝试了以下 Xpath:
browser.find_elements_by_xpath('html/body/div[7]/div[1]/a/span').click()
这会出错 :
Traceback (most recent call last):
File "C:\Python27\Off5th_Registration", line 25, in <module>
browser.find_elements_by_xpath('html/body/div[7]/div[1]/a/span').click()
AttributeError: 'list' object has no attribute 'click'
通过班级名称 :
browser.find_element_by_class_name('ui-dialog-titlebar-close ui-corner-all').click()
这会出错 :
Traceback (most recent call last):
File "C:\Python27\Off5th_Registration", line 25, in <module>
browser.find_element_by_class_name('ui-dialog-titlebar-close ui-corner-all').click()
File "C:\Python27\lib\selenium\webdriver\remote\webdriver.py", line 341, in find_element_by_class_name
return self.find_element(by=By.CLASS_NAME, value=name)
File "C:\Python27\lib\selenium\webdriver\remote\webdriver.py", line 681, in find_element
{'using': by, 'value': value})['value']
请帮助!!
答案 0 :(得分:0)
首先,您使用的是find_elements_by_xpath
,这会返回一个元素列表,您应该使用find_element_by_xpath
(注意非复数形式)。
其次,我不确定你的xpath是否正确,虽然我不确定,但我记得从某个地方你必须使用完整的xpath(以//或/开头)。所以在你的情况下,'//html/body/div[7]/div[1]/a/span'
第三,不支持复合类名,在webdriver上下文中,这意味着如果您的类名中有空格,则不能选择by_class_name。
无论如何,请尝试以下方法:
browser.find_element_by_xpath('//a[@class=\"ui-dialog-titlebar-close ui-corner-all\"]').click()
编辑回答你的评论: 也许你来得太快了?尝试:
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
element = WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.XPath, '//a[@class=\"ui-dialog-titlebar-close ui-corner-all\"]')))