错误结果是因为我无法通过xpath获取正确的元素。 Web句柄是否已更改? 我可以点击图片吗?我不明白如何解释错误。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome()
#browser.get('https://ebs.lcb.state.pa.us/OA_HTML/AppsLocalLogin.jsp')
driver.get('http://www.finewineandgoodspirits.com')
assert 'Fine Wine & Good Spirits: Shop Online for Wine and Spirits in Pennsylvania' in driver.title
browser.find_element_by_xpath("xpath=//div[@id='ageVerify']/img[@alt='Yes']").click()
InvalidSelectorException:消息:无效的选择器:无法找到 带有xpath表达式的元素 xpath = // div [@id =' ageVerify'] / img [@alt ='是']因为以下原因 错误:TypeError:无法执行'评估' on' Document':The 结果不是节点集,因此无法转换为 期望的类型。 (会议信息:chrome = 59.0.3071.115)(驱动信息: chromedriver = 2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform = Windows NT 6.1.7601 SP1 x86_64)
答案 0 :(得分:0)
你的Xpath中div和img之间还有另一个div,所以你的Xpath不会返回任何内容。
将"xpath=//div[@id='ageVerify']/img[@alt='Yes']"
更改为"//div[@id='ageVerify']/div/img[@alt='Yes']"
,您应该可以点击它。
答案 1 :(得分:0)
您正在使用驱动程序driver = webdriver.Chrome()
启动webdriver和浏览器browser.find_element_by_xpath("xpath=//div[@id='ageVerify']/img[@alt='Yes']").click()
以单击不正确的图像,您必须使用单个变量才能继续执行代码。
弹出窗口上有三个图像
由于您要单击是以继续现场,您需要更新xpath代码以单击是图像
driver.find_element_by_xpath("//div[@id='ageVerify']//img[@alt='Yes']").click()
我使用了这段代码,然后点击了Yes image
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.finewineandgoodspirits.com')
assert 'Fine Wine & Good Spirits: Shop Online for Wine and Spirits in Pennsylvania' in driver.title
driver.find_element_by_xpath("//div[@id='ageVerify']//img[@alt='Yes']").click()