我正在try 使用XPath关闭弹出窗口,但失败了:
网址:https://www.zhihu.com/question/42867599
driver.find_element_by_xpath("/html/body/div[5]/div/div/div/div[2]/button/svg").click()
我从Firefox那里得到了XPath,所以我不知道这里出了什么问题.页面的图像即被添加.
我正在try 使用XPath关闭弹出窗口,但失败了:
网址:https://www.zhihu.com/question/42867599
driver.find_element_by_xpath("/html/body/div[5]/div/div/div/div[2]/button/svg").click()
我从Firefox那里得到了XPath,所以我不知道这里出了什么问题.页面的图像即被添加.
Xpath
:'//button[@class="Button Modal-closeButton Button--plain"]'
点击svg
元素是没有意义的,因为事件监听器在button
上.
浏览器自动生成的XPath
很糟糕,它们不是可靠的查询.
Take a look at my own project to craft more specific XPath
(or even CSS
selectors) more easily and with better querys:
https://github.com/sputnick-dev/retrieveCssOrXpathSelectorFromTextOrNode
您甚至可以像这样使XPath
更可靠(部分匹配):
'//button[contains(@class, "closeButton")]'
您还可以使用属性中的文本:
'//button[@aria-label="关闭"]'
Select 在你的情况下看起来更可靠的那个.如果页面内部发生变化,您也可以保留对其他版本的 comments .
$x('//button[@class="Button Modal-closeButton Button--plain"]')[0].click()
find_element_by_xpath(selector)
方法在Selenium 4
中已弃用,您应该改用:
selector = '//button[contains(@class, "closeButton")]'
from selenium.webdriver.common.by import By
find_element(By.XPATH, selector)