【问题标题】:Python selenium click on button if it appears on screenPython selenium 点击按钮,如果它出现在屏幕上
【发布时间】:2019-03-13 19:59:53
【问题描述】:

所以,有一个网站是由 javascript 生成的。并且每秒更新。我想每秒都得到这些值。但是该网站会弹出一个模式询问“你还在这里吗”。然后你需要点击按钮。所以首先我的代码如下所示:

    try:
        button = browser.find_elements_by_xpath("//button[contains(@value, 'Refresh Page')]");
        button.click()
        rounds = rounds+1
    except:
        rounds = rounds+1

但是当我查看我的浏览器时,它仍然会重新加载每一轮,即使它没有显示在屏幕上。

我怎样才能做到这一点,只在屏幕上点击按钮?谢谢!

【问题讨论】:

  • 你能不能把find_elements_by_xpath改成find_element_by_xpath试试
  • 不,它仍然会在每次@NarendraR 时重新加载
  • 可以分享一下网址吗?
  • @NarendraR 我认为这是一个错字,否则 OP 会得到 AttributeError: 'list' object has no attribute 'click'
  • @NarendraR 网址是rolimons.com/deals

标签: python python-3.x selenium selenium-webdriver


【解决方案1】:

一旦按钮可用且可见,请通过以下代码单击按钮以刷新页面

button = browser.find_elements_by_xpath("//button[contains(@value, 'Refresh Page')]");

//To check button is present on page

if (len(button)>0):  

//And is displayed

if button[0].is_displayed():
      button[0].click()
   else:
      print "button not display"
else: 
    print("there is not refresh page button") 

// to check the dialog present here "show" is the class which retain by the div once the refresh button get enabled

if "show" in browser.find_element_by_id('timeout_dialog').get_attribute('class'):
   browser.find_element_by_xpath("//button[contains(@value, 'Refresh Page')]").click()
else:
  print "refresh button not displaying"

注意:按照python进行语法修正

【讨论】:

  • 第一个代码块后半部分的缩进不正确。第二个if(和后面的)应该缩进,因为它应该在第一个if内。另外,python cmets 是 # 不是 //,请参阅 the docs
  • @JeffC,是的,我知道这就是我添加注释的原因,因为在我的系统中发布纯代码是有限制的。
  • 我不明白你为什么不能修复它???您需要修复它,否则它不正确,尤其是第一部分。
  • 这有点粗鲁,是吗?我可以修复它,但我的工作不是四处走动并修复其他人的错误。我向你指出了它们......你为什么不能修复它们?你通常有其他人来收拾你的烂摊子吗?你的答案是错误的,我指出了错误,你拒绝修复它们。
  • @JeffC,我的系统在办公网络中,并且有某些算法不允许任何人复制或粘贴代码。并且 您的回答是错误的 我不这么认为我的回答对 OP 有帮助,他已经预料到了。可能是你必须自己努力
猜你喜欢
  • 2018-12-21
  • 2018-09-04
  • 2014-02-16
  • 2016-05-08
  • 2021-09-14
  • 2018-05-11
  • 1970-01-01
相关资源
最近更新 更多