Selenium 求助百度首页 [登录]&[设置] 按钮定位不到问题

Clover · January 04, 2018 · Last by Clover replied at January 11, 2018 · 2720 hits

如题。使用python+selenium

百度首页右上角【登录】按钮

可能由于onclick属性等于false的缘故,定位不到,尝试用JS去除该属性也失败。

百度首页右上角【设置】按钮

尝试鼠标事件move_to该元素,定位不到悬浮框内的按钮

求助

共收到 11 条回复 时间 点赞

在 iframe 里吧

恒温 回复

貌似不是...隔壁的贴吧呀图片呀都可以,就这俩不行,看代码好像也不在iframe里头😢

我试了用 css、 xpath 、 link text 都可以定位到啊

Jerry li 回复


可以定位到【设置】,但是想进一步定位浮框里的按钮就报错...求助..

Clover 回复

在查找搜索设置元素前加个等待时间看下

给你一个思路,这是puppeteer的脚本:

const puppeteer = require("puppeteer");
puppeteer.launch({
executablePath: './chromium/chrome.exe',
headless: true
}).then(async browser => {
const page = await browser.newPage();
await page.goto("https://www.baidu.com/", { waitUntil: "networkidle2" });
await page.click("#u1 .lb");
//await page.type("#kw", "砖家叫兽", {delay: 200});
//await page.click("#su");
await page.screenshot({ path: "./test/results/baidu.png" });
browser.close();
});

先找父元素,再element.find_element_by_class

因为我电脑没装Firefox ,所以用chrome 试了下, 加上一个页面最大化的命令是可以的,你可以试下:

  1. driver 初始化后,加上 driver.maximize_window() ,如下图
  2. 如果还不行,试下换 chrome , 如果chrome 可以而Firefox 不行,就可能是 firefox 的原因

Jerry li 回复

正解。已尝试。
但是火狐还是不行,Chrome不最大化也还是不行,这是什么原理呢...😢

我使用chrome 去掉最大化也是可以点击到的,可能是你chrome 版本问题?

咦嘿嘿嘿,俺来终结你这个帖子了!
原来百度上有两个文本属性为【设置】的链接,第一个的div(id是u)的display属性为none,只有第二个的div(id是u1)的display属性才是block,见图

第一个【设置】(不可见的那个)

第二个【设置】(可见的那个)

可以通过修改第一个【设置】所在的div的属性为可见,可以查看到这些按钮是被隐藏到了右上角的后边

接下来通过xpath或者定位过程中加个index等各种方法就可以识别到你想要的链接了,送你一个修改【设置】列表下拉框的js

360浏览器:

@page.execute_script "document.getElementsByClassName('bdpfmenu').style.display='block';"

chrome:

@page.execute_script "
divset = document.getElementsByClassName('bdpfmenu');
for (var i = 0; i<divset.length;i++) {
divset[i].style.display='block';
};"

Clover #11 · January 11, 2018 作者
杨腾 回复

厉害,学习了。

Clover 关闭了讨论 11 Jan 10:46
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up