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

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

请教 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 即可

程明远 #1 回复

哥,谢谢你

程明远 #1 回复

还是不行啊


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

程明远 #5 回复

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

程明远 #5 回复

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

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

Jacc #8 回复

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

Jacc #8 回复

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

Jacc #8 回复

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

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

在路上 #11 回复

···
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()
···

在路上 #1 回复

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

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

神话哥 #15 回复

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

在路上 #1 回复

写 xpath 少用绝对路径

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

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