【发布时间】:2016-05-09 20:55:33
【问题描述】:
我试图点击的部分:
<ul class="btns right">
<li><a href="javascript:void(0)" onclick="hr_expand_event_tab_all("")" class="expand-all" id="btn_expand_all_10580503">View All Cards</a></li>
</ul>
我认为非常简单。但我似乎遗漏了什么。
问题现在在页面下方更新了一点。 xpath 不是我用更正的 xpath 尝试过的问题,它与使用类名相同。 CSS 隐藏了按钮的几个版本,但一个 common.exception 被抛出它实际使用 xpath 或类名找到的那些。
我已经检查了页面是否正确加载并且元素在那里。我有一张支票要等到整个页面加载完毕并截图确认。
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() 尝试:除了:他们都失败了。没想到。
进一步更新:
所以我运行了这个:
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'>
所以它可以看到它们。它不会点击它们。 “常见异常”似乎并没有太大帮助。
【问题讨论】:
-
似乎该按钮是使用 css 隐藏的。当您在浏览器中获取此页面时,您能看到按钮吗?
-
//*/a[contains(text(), 'View All Cards')] 试试这个 xpath,你的 xpath 构造似乎错误
-
当按钮有 id 时,为什么这一切都需要 xpath?
-
@e4c5 考虑到 id 中的数字,我猜它可能是自动生成的 id。
-
ID 似乎是动态的..框架生成.....
标签: python selenium web-scraping