首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Selenium导航网站

使用Selenium导航网站
EN

Stack Overflow用户
提问于 2016-09-14 16:56:54
回答 3查看 2.1K关注 0票数 1

我的目标是使用Python的实现在线账单支付的自动化。

使用此代码成功地使用Webdriver登录:

代码语言:javascript
复制
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://website.com/Home')
emailElem = browser.find_element_by_id('UserName') #finds login username field 
emailElem.send_keys('username') #enter the username
passwordElem = browser.find_element_by_id('UserPassword') #finds pw field
passwordElem.send_keys('password') #enters pw
passwordElem.submit() #presses submit button

登录后,将加载一个新页面,我的下一步是单击一个链接。守则:

代码语言:javascript
复制
browser.implicitly_wait(3) #allow new page to load (also tried 5 seconds)
click_link = browser.find_element_by_link_text("Bill & Payment")
click_link.click()

什么都没发生。没有导航到汇票和付款页面。实际的链接中有一个<BR>标记,所以我也尝试包括这个标记:

代码语言:javascript
复制
click_link = browser.find_element_by_link_text("Bill &<BR>Payment")

但还是什么都没有。我还应该做些什么呢?

错误:

回溯(最近一次调用):文件"/home/captain/.PyCharmEdu30/config/scratches/scratch_1.py",第12行,在click_link = browser.find_element_by_link_text("Bill &Payment“)#单击下一页的链接 文件"/home/captain/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py",第317行,在find_element_by_link_text返回self.find_element(by=By.LINK_TEXT,value=link_text)中 文件"/home/captain/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py",第752行,以find_element 'value':value})'value‘ 文件"/home/captain/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py",第236行,执行self.error_handler.check_response(响应) 文件"/home/captain/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py",第192行,在check_response提出exception_class(消息、屏幕、堆栈跟踪)exception_class消息:无法定位元素:{“方法”:“链接文本”,“选择器”:“票据和付款”} Stacktrace: at (file:///tmp/tmps7uj9u0l/extensions/fxdriver@googlecode.com/components/driver-component.js:10770) at fxdriver.Timer.Prototype.Stacktrace/<..notify (file:///tmp/tmps7uj9u0l/extensions/fxdriver@googlecode.com/components/driver-component.js:625)

EN

回答 3

Stack Overflow用户

发布于 2016-09-14 17:22:16

您正在经历的错误是,您要查找的元素不在页面中。在我使用Selenium的经验中,我发现css选择器在与网站的交互中通常工作得最好。还可以从命令行运行python,以便通过以下方法测试元素是否有一个好的钩子值:

代码语言:javascript
复制
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://website.com/Home')
element = "what you want to test here"
driver.find_element_by_id(element).click()

只要您保持python解释器处于打开状态,就可以一直更改元素的值并运行这些行。

如果问题似乎是Selenium没有等待足够长的时间来加载页面,您可以尝试如下所示的等待方法:

代码语言:javascript
复制
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

time = 10  # Wait for 10 seconds
by = By.CSS_SELECTOR  # The type of hook the element is
hook = "css.selector.here"  # The value for the hook (could also be xpath, name, id, etc.)
# Waits until either the element specified by variables by and hook is     
# In the page, or the value of time seconds has passed.
WebDriverWait(self.driver, time).until(ec.presence_of_element_located((by, hook)))
driver.find_element(by, hook).click()
票数 2
EN

Stack Overflow用户

发布于 2016-09-14 20:02:50

对于我来说,文档通常过于技术性,但对于Selenium绑定来说,它非常简单。

因为链接文本中有一些格式,所以我使用了部分链接文本方法,并且它工作了。

来自文献资料的示例

代码语言:javascript
复制
continue_link = driver.find_element_by_partial_link_text('Conti')
票数 1
EN

Stack Overflow用户

发布于 2016-09-14 18:47:51

试着使用

“网上付款”链接的click_link=driver.find_element_by_xpath(eg.xpath )

click_link.click()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39495916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档