【问题标题】:selenium whatsapp button search vba硒whatsapp按钮搜索vba
【发布时间】:2018-09-17 23:34:56
【问题描述】:

我有一个大问题!正常使用几天后突然不能再选择web whatsapp的按钮键号了!

环境是 Chrome,我使用 Selenium 网络驱动程序...我正在尝试对不同的标签进行所有搜索,但什么也没有...

这是代码

bot.wait 4000       
bot.findElementByClassName("C28xL").Click

我也尝试使用不同的部分,但什么都没有......即使使用 xpath 或 css 但也许我错了。


按钮搜索whatsapp web

选择按钮。

<div class="gQzdc"><button class="C28xL"><div class="_1M3wR _1BC4w"><span class="" data-icon="back-blue"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="#4FC3F7" d="M20 11H7.8l5.6-5.6L12 4l-8 8 8 8 1.4-1.4L7.8 13H20v-2z"></path></svg></span></div><div class="_1M3wR _3M2St"><span class="" data-icon="search"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="#263238" fill-opacity=".3" d="M15.009 13.805h-.636l-.22-.219a5.184 5.184 0 0 0 1.256-3.386 5.207 5.207 0 1 0-5.207 5.208 5.183 5.183 0 0 0 3.385-1.255l.221.22v.635l4.004 3.999 1.194-1.195-3.997-4.007zm-4.808 0a3.605 3.605 0 1 1 0-7.21 3.605 3.605 0 0 1 0 7.21z"></path></svg></span></div></button><span></span><div class="_2cLHw">Cerca o inizia una nuova chat</div><label class="_2MSJr"><input value="" title="Cerca o inizia una nuova chat" dir="auto" data-tab="2" class="jN-F5 copyable-text selectable-text" type="text"></label></div>

页面更多 html 的屏幕截图:

<div class="gQzdc">
<button class="C28xL">
<div class="_1M3wR _1BC4w">
<span class="" data-icon="back-blue">
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<path fill="#4FC3F7" d="M20 11H7.8l5.6-5.6L12 4l-8 8 8 8 1.4-1.4L7.8 13H20v-2z"></path>
</svg>
</span>
</div>
<div class="_1M3wR _3M2St">
<span class="" data-icon="search">
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<path fill="#263238" fill-opacity=".3" d="M15.009 13.805h-.636l-.22-.219a5.184 5.184 0 0 0 1.256-3.386 5.207 5.207 0 1 0-5.207 5.208 5.183 5.183 0 0 0 3.385-1.255l.221.22v.635l4.004 3.999 1.194-1.195-3.997-4.007zm-4.808 0a3.605 3.605 0 1 1 0-7.21 3.605 3.605 0 0 1 0 7.21z">
</path>
</svg>
</span>
</div>
</button>
<span>
</span>
<div class="_2cLHw">Cerca o inizia una nuova chat</div>
<label class="_2MSJr">
<input value="" title="Cerca o inizia una nuova chat" dir="auto" data-tab="2" class="jN-F5 copyable-text selectable-text" type="text">
</label>
</div>

直到星期五,一切都很好。我还在 2.42 更新了 webdriver,chrome 更新到了 69。 我该怎么办?

【问题讨论】:

  • 这是以“未经批准”的方式从网站上抓取数据的固有问题……公司一直对其网站进行微小或重大的更改,有时更改会搞砸您的抓取方法,使您有必要修改代码或从头开始。
  • 网站的网址是什么?您是否查看过网站的 HTML 以查看您要查找的元素是否仍然存在?
  • 我们无法为您提供我们只有图片的元素的定位器。您需要发布相关的 HTML。
  • 对不起,我以为你知道链接.... web.whatsapp.com 密钥仍然存在,它的 HTML 在我看来是一样的,但我没有太多经验。密钥的名称始终相同。
  • 对不起,我不能使用sn-p工具...我已经发布了代码的图像

标签: vba selenium ms-access selenium-webdriver webdriverwait


【解决方案1】:

根据您共享的 HTML,该元素是一个 动态元素,因此您必须诱导 Wait 元素可点击,您可以使用以下解决方案:

bot.wait 4000       
bot.FindElementByXPath("//input[contains(@class,'copyable-text selectable-text') and @title='Cerca o inizia una nuova chat']").Click

注意:作为一项增强功能,您需要将 wait 替换为 WebDriverWait

【讨论】:

  • 请问您如何识别它是来自 html 的动态元素?
  • @QHarr 如果您查看 OP 提供这些类的 HTML 中的 class 属性,例如gQzdcC28xL 等是JavaScript 生成的类,它们必然会不时改变。进一步的一些其他class 属性,例如_1M3wR_1BC4w 等是基于 ReactJS 的类,在下一个会话期间可能不会出现。因此,我们可以得出结论,具有这些 类属性 的元素是动态元素。
  • @QHarr 我已嵌入链接供您参考。能够识别基于 js/react/生成的元素肯定会帮助我们识别 AUT 的动态特性,我们可以在解释 HTML DOM 时考虑这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
  • 2021-11-27
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多