python selenium选择元素

时间:2018-02-26 10:24:00

标签: python selenium selenium-chromedriver

我的页面看起来像这样

https://imgur.com/Vfhp8N7.png

当我点击B按钮然后整行隐藏

我需要selenium点击B按钮然后点击下一个B按钮

https://imgur.com/WGltHlG.png

但我无法想象我如何尝试使用xpath或class

进行定位
driver.find_element_by_xpath("//*[contains(@class, 'farm_icon_b')]").click()

但它没有用

我尝试用户数组

arr = []
driver.find_element_by_xpath("//*[contains(@class, 'farm_icon_b')]")[0].click()

但也没什么

<a href="#" onclick="return Accountmanager.farm.sendUnits(this, 4352, 6820)" class="farm_village_4352 farm_icon farm_icon_b"></a>

我有理由执行Accountmanager.farm.sendUnits(this, 4352, 6820),但每次数字4352,6820都不同

有什么想法吗?

修改

我试过

entries_count =   
len(driver.find_elements_by_css_selector(".farm_icon.farm_icon_b"))
for index in range(entries_count):
current_len = 
len(driver.find_elements_by_css_selector(".farm_icon.farm_icon_b"))
driver.find_elements_by_css_selector(".farm_icon.farm_icon_b")[entries_count - index - 1].click()
wait.until(lambda driver: len(driver.find_elements_by_css_selector(".farm_icon.farm_icon_b")) == current_len - 1)

但是得到了错误

  

引发exception_class(消息,屏幕,堆栈跟踪)   selenium.common.exceptions.WebDriverException:消息:未知错误:元素在点(833,706)处无法单击。其他元素会收到点击:...     (会话信息:chrome = 64.0.3282.186)     (驱动信息:chromedriver = 2.35.528161(5b82f2d2aae0ca24b877009200ced9065a772e73),platform = Windows NT 10.0.16299 x86_64)

div中的

linkCotainer不是很有趣但是在这里

<div id="linkContainer">
  <a href="#" class="world_button_active evt-world-selection-toggle">Svět 57</a>
  <a href="https://forum.divokekmeny.cz" class="footer-link" target="_blank">Fórum</a> &nbsp;-&nbsp;
  <a href="https://help.divokekmeny.cz" class="footer-link" target="_blank">Nápověda</a> &nbsp;-&nbsp;
  <a href="/game.php?village=4549&amp;screen=settings&amp;mode=ticket" class="footer-link" target="_blank">Support</a> &nbsp;-&nbsp;
  <a href="/game.php?village=4549&amp;screen=settings&amp;mode=ref&amp;source=bottom_menu" class="footer-link">Pozvat hráče</a> &nbsp;-&nbsp;
  <a href="/game.php?village=4549&amp;screen=memo" class="footer-link">Poznámkový blok</a> &nbsp;-&nbsp;
  <a href="/game.php?village=4549&amp;screen=&amp;action=logout&amp;h=278e0f2a" target="_top" class="footer-link">Odhlášení </a>
</div>

1 个答案:

答案 0 :(得分:0)

它告诉你为什么它不能点击你的元素:

Other element would receive the click: <div id="linkContainer">...</div>

要解决此问题,首先找到阻止您想要的元素的元素,方法是转到浏览器中的开发工具,单击控制台选项卡,然后查找窃取您点击的元素:

$$("div[id='linkContainer']")

如果返回控制台中的元素,请单击箭头将其展开并将鼠标悬停在子元素上。你看到页面上有什么突出显示吗?如果是这样,那就是获得点击的内容,您可以从那里制定新的方法。

某些东西很可能隐藏了您要点击的元素。如果在代码中设置调试点并尝试在您在脚本中找到它的精确位置手动定位元素,您也可以节省很多时间:

import pdb; pdb.set_trace() # This will drop you into a Python prompt
driver.find_element_by_xpath("//*[contains(@class, 'farm_icon_b')]").click()

一旦你的脚本点击调试点,它将为你提供所有变量完整的Python提示,这样你就可以用驱动程序操作浏览器,直到你发现问题为止。

快乐狩猎。