python selenium 点击按钮_奇怪的Python Selenium按钮单击行为

我要点击的部分:

  • View All Cards

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

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

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

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

给出:

所以我试图找到一个锚点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"

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

进一步更新:

所以我跑了这个:

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

第一对夫妇给了我这个:

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

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

解决方案

试试这个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

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

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

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

你可能感兴趣的:(python,selenium,点击按钮)