当前位置: 首页 > 面试题库 >

奇怪的Python Selenium按钮单击行为

明越
2023-03-14
问题内容

我要点击的部分:

<ul class="btns right">
<li><a href="javascript:void(0)" onclick="hr_expand_event_tab_all(&quot;&quot;)" class="expand-all" id="btn_expand_all_10580503">View All Cards</a></li>
</ul>

我想很简单。但是我似乎丢失了一些东西。

现在,问题在页面的下方进行了更新。
xpath并不是我尝试使用更正后的xpath的问题,它与使用类名相同。CSS隐藏了该按钮的多个版本,但是在它实际上使用xpath或类名找到的按钮上抛出了common.exception。

我检查了页面是否已正确加载,并且元素在那里。我有一个检查要等到整个页面加载完毕并确定它的屏幕截图。

loadbutton = Driver.find_element_by_xpath("//a[@class='expand-all']")

给出:

<class 'selenium.common.exceptions.ElementNotVisibleException'>

所以我试图找到一个锚点onclick:

loadbutton = Driver.find_element_by_xpath("//li[contains(@onclick, 'View All Cards')]")

具有相同的结果。我也尝试过一些正则表达式来捕获id的变化,但是我不确定我在哪里出错。有一个onlick并且已加载,但我看不到找到它。

我会感谢任何可以向我展示我在这方面做错了什么的人。

/更新:

原来,按钮有多个版本,有些是可见的,而另一些则不可见。

我循环了:

loadbutton = Driver.find_elements_by_xpath("//a[@class='expand-all']")
for button in loadbutton:
  print "button found"

出现了多个结果。较早的那些被隐藏了,但最后的那些肯定显示在我的浏览器和屏幕截图中。因此,我希望早期的版本会失败,并尝试添加一个.click():except:并且它们都仍然失败。没想到。

进一步更新:

所以我跑了这个:

loadbutton = Driver.find_elements_by_xpath("//a[@class='expand-all']")
for button in loadbutton:
  print "button found"
  try:
    button.click()
  except:
    e = sys.exc_info()[0]
    print e

第一对夫妇给了我这个:

<class 'selenium.common.exceptions.ElementNotVisibleException'>

确定,期望CSS将其隐藏。显示的最后两个给了这个:

<class 'selenium.common.exceptions.WebDriverException'>

这样就可以看到他们。它不会单击它们。“常见异常”似乎没有太大帮助。


问题答案:

试试这个xpath(用代码块更新,所以网站删除了我的*)

//*[contains(concat(' ', @class, ' '), ' btns right ')]//*[contains(concat(' ', @class, ' '), ' expand-all ') and contains(text(), 'View All Cards')]

提供一些等待元素可点击(建议隐式)。

我只用于java,但是我在这里引用了python ,这可能有帮助!

from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
button = wait.until(EC.element_to_be_clickable((By.XPATH,'//*[contains(concat(' ', @class, ' '), ' btns right ')]//*[contains(concat(' ', @class, ' '), ' expand-all ') and contains(text(), 'View All Cards')]')))
button.click()


Even if the above thing fails, try this

形成这些链接link1和link2

driver.execute_script("document.getElementsByClassName('expand-all')[0].click();")

在所需元素上插入人工点击,删除(注释)所有其他代码

可能是您的应用属于link2 OP :)



 类似资料:
  • 我试图让我的机器人点击购买按钮,但它有一些奇怪的文本,无法让我的代码工作(我想这就是为什么如果我错了,不要生气)。 断续器 我尝试过的代码: 我也按班级尝试过,但似乎根本不起作用。

  • 我有由标签(Tk.Label)、条目表单(Tk.entry)、按钮(Tk.button)和嵌入式matplotlib组成。这是一个简单的脚本,它用用户指定的系数(a,b,c)绘制四层函数。但是我在破坏主循环时遇到了一些问题和误解。我原以为,简单地关闭主窗口(通过单击右角的“x”)也会导致退出mainloop。如果我要注释与嵌入画布相关的所有代码,那么我的脚本就是这样。但对于嵌入式,它不会发生(因此

  • 我正试图抓取一个页面,获取一盘国际象棋的移动列表,该列表位于右侧菜单的“移动”选项卡下。 在浏览器中手动单击“移动”选项卡时,我可以通过 哪个(正确地)返回 当尝试通过单击按钮时,使用 似乎什么都没有发生,我不知道如何进行故障排除。 如何通过模拟单击(活动事件侦听器)切换到“移动”选项卡? 额外提示:是否可以使用rvest软件包?

  • 问题内容: 我正在尝试在www.meetme.com上发送消息,但不知道该怎么做。我可以在评论区域中键入消息,但是单击“发送”按钮不会执行任何操作。我究竟做错了什么?当我登录并按登录按钮时,页面确实发生了变化,一切都很好。有人有任何想法或线索吗? 问题答案: 如果不了解正在访问的网页,就无法在禁用JavaScript的情况下执行AJAX请求。如果更改未成功,则必须继续进行调试,但请确保已启用Jav

  • 我正试图让JQuery在按下下一个按钮时自动单击该按钮。在互联网上,我发现应该是这样的(查看JQuery部分)。但由于某种原因,它不起作用。 它们必须在同一个代码中吗? 我尝试过的:JQuery: 表单中的按钮1 HTML: 表单中的按钮2 HTML:

  • 问题内容: 我正在使用Scrapy爬行网页。单击某些按钮时,仅会弹出一些我需要的信息(当然,单击后也会显示在HTML代码中)。 我发现Scrapy可以处理的形式(如登录)如图所示这里。但是问题在于没有表格可以填写,所以这不是我所需要的。 如何简单地单击一个按钮,然后显示我需要的信息? 我是否必须使用诸如机械化或lxml之类的外部库? 问题答案: Scrapy无法解释javascript。 如果你绝