我试图从Uniprot下载蛋白质序列与以下代码.
driver = webdriver.Chrome(driver_location)
#get website
driver.get('https://www.uniprot.org/uniprotkb/P19515/entry#sequences')
#stall to load webpage
time.sleep(5)
#scroll webpage
#driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
#create instance of button and click
button = driver.find_element_by_link_text("Copy sequence")
button.click()
运行上一个代码块将返回以下错误
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"Copy sequence"}
此外,下面是css布局enter image description here
我认为问题是按钮是动态的或隐藏的,以至于webdriver无法找到按钮。我知道有一个Uniport API,可能还有其他更有效的方法来下载蛋白质序列,但为了学习如何修改我的代码,为什么按钮不可点击?
2条答案
按热度按时间xnifntxz1#
链接文本只有在定位器有超链接的情况下才有效,所以在这种情况下它不会有效,因为它是一个将文本复制到剪贴板的按钮,而不是一个
href
标记。但是,您可以修改代码以
并且它将执行点击操作。
9jyewag02#
link_text
只适用于a
标记,不适用于button
标记。但是如果您使用SeleniumBase framework on GitHub,则可以使用一个特殊的TAG:contains("TEXT")
选择器来单击按钮。下面是一个工作脚本:(使用
pip install seleniumbase
安装seleniumbase
后,使用python
或pytest
运行脚本)您可以使用SeleniumBase Recorder从手动浏览器操作中生成类似的脚本。
if __name__ == "__main__":
的最后一部分允许您使用python
而不仅仅是pytest
运行脚本。