问答 请教 selenium 或 selenide 怎么获取弹出窗口的元素?

在路上 · 2018年04月20日 · 最后由 MagicCube 回复于 2018年09月30日 · 2750 次阅读

请教 selenium 或 selenide 怎么获取弹出窗口的元素?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
最佳回复

各位,搞定了,是我的 xpath 有问题,chrome 自动抓取的 xpath 没有找到
chrome 抓取的 xpath:/html/body/div[7]/div/div[3]/a[1]
成功的 xpath://a[@class='inline_block red_bt_m mr40']

共收到 18 条回复 时间 点赞

swith_to_alert 即可

程明远 回复

哥,谢谢你

程明远 回复

还是不行啊

看了一下这个网页的源码,你这个弹出来的并不是一个 alert 弹窗,还是一个 div,有一个 visibility 属性.为 Hidden 时则会被隐藏

程明远 回复

帅哥,遇到这种情况怎么解决啊?

程明远 回复

刚开始写 UI 自动化,一脸懵逼

你是要获取哪个元素?刚用 webdirver,“去购物车结算”、“继续购物”、“添加成功” 都可以用 xpath 定位到

Jacc 回复

可以看一下代码吗?我就是用这几个功能,定位到元素后,你可以 click 吗?

Jacc 回复

方便加微信沟通一下吗? TTMMD155

Jacc 回复

我这边确实找不到,你是怎么找到的啊?可以看看你的代码吗?

各位,搞定了,是我的 xpath 有问题,chrome 自动抓取的 xpath 没有找到
chrome 抓取的 xpath:/html/body/div[7]/div/div[3]/a[1]
成功的 xpath://a[@class='inline_block red_bt_m mr40']

在路上 回复

···
driver = webdriver.Chrome()
driver.get('https://www.lemall.com/product/products-pid-GWGT550635.html')
time.sleep(3)
#driver.maximize_window()
time.sleep(0.5)
driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[2]/div[4]/div[2]/div[1]/a').click()
time.sleep(0.5)
a = driver.find_element_by_xpath('/html/body/div[6]/div/div[3]/a[1]/span').text
b = driver.find_element_by_xpath('/html/body/div[6]/div/div[3]/a[2]/span').text
c = driver.find_element_by_xpath('/html/body/div[6]/div/div[2]').text
time.sleep(1)
print(a,b,c)
driver.close()
···

在路上 回复

额,我刚要给你回复,搞定就好,我那个 maximize_window() 不知道为啥不起作用,所以注掉了,手点的。。

swith_to_alert 或者 swith_to_frame 之后还是不行 可以试试用 focus 先把焦点移到元素上再操作

神话哥 回复

嗯嗯,好的,谢谢,搞定了

在路上 回复

写 xpath 少用绝对路径

我刚也遇到了无法点击弹框上的元素,我的现象是可识别但是无法点击,加上这个最大化就可以了 driver.maximize_window()

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册