我的目标是使用硒为Python自动在线账单支付。
使用以下代码使用 Web 驱动程序登录成功:
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
登录后,一个新的页面加载,我的下一步是点击一个链接。代码:
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()
什么也没发生。没有导航到该法案
click_link = browser.find_element_by_link_text("Bill &<BR>Payment")
但仍然没有。我还应该尝试其他什么?
错误:
Traceback(最近调用的最后一次):File"/home/队长/. PyCharmEdu30/config/划痕/scratch_1.py",第12行,在click_link=browser.find_element_by_link_text("Bill
File "/home/captain/。local/lib/python 3.5/site-packages/selenium/web driver/remote/web driver . py”,第317行,在find_element_by_link_text返回self.find_element(by=By。LINK_TEXT,值=link_text)
文件“/home/caport/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py”,第752行,在find_element'value':value})['value']中
执行self.error_handler.check_response(响应)中的文件“/home/caport/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py”,第236行
文件“/家/船长/.本地/lib/python3.5/站点包/硒/网络驱动程序/远程/错误处理程序.py”,第 192 行,check_response引发exception_class(消息、屏幕、堆栈跟踪)硒。
堆栈跟踪:在FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmps7uj9u0l/extensions/fxdriver@googlecode.com/components/driver-component.js:10770) 在 fxdriver。定时器.prototype.setTimeout/
尝试使用
click_link=driver.find_element_by_xpath(例如“在线账单支付”链接)
click_link点击()
文档通常技术性太强,我无法理解,但对于硒Python绑定来说非常简单。
因为链接文本中有一些格式,我使用了部分链接文本方法,它起作用了。
留档示例:
continue_link = driver.find_element_by_partial_link_text('Conti')
您遇到的错误是您要查找的元素不在页面中。根据我对Selenium的经验,我发现css选择器通常最适合与网站进行交互。您还可以通过以下方式从命令行运行 python 来测试元素是否具有良好的钩子值:
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没有等待页面加载足够长的时间,那么您可以尝试以下等待方法:
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()
正在研究尝试理解显式等待的方法。 所以单选按钮被点击后,输入形式发生了变化,所以我把给它一个时间元素出现,否则会出错“元素不可见......”。所以我认为现在是理解显式等待的好时机,因为我需要等到元素出现。 但出现错误“Selenium::WebDriver::error::ElementNotVisibleError:Element当前不可见,因此可能无法与之交互”。为什么这段代码不等到元素出现
我有一个问题,上传文件到网络系统使用硒驱动程序。所以在我的页面上,我没有任何输入来设置文件路径,而且我在网络上找到的大多数解决方案都不适合我。我必须点击上传文件按钮,然后在窗口对话框中设置文件的路径。我找到了winforms SendKeys类中使用的方法: 它的工作,但只有当测试有完全控制的机器(如果没有-路径已发送到某处不对话)。这就是问题所在,因为我无法完全控制运行测试的机器。你知道不使用S
我查了一下,我怎么能默默地运行硒:在这里找到了下一个伟大的答案 我正在尝试让selenium正常运行,直到一些操作完成,然后在后台运行它。 有可能吗? 高级Oz中的thanx
下面是我为firefox浏览器初始化的selenium web驱动程序。 尽管我给出了隐式等待,但我没有等待元素。它会立即抛出not found异常。如果我放那么它工作正常,没有任何问题。但是把现在测试用例包含更多线程的任何地方。sleep比实际的测试用例代码低。有人能给我建议正确的方法吗?
我正在尝试切换选项卡并通过导航到url进行操作'http://toolsqa.com/'然后转到演示站点-- 使用的不同代码: 代码1: 代码2: 代码3: 以上是我用来切换标签的方法,但是还没有成功。请在这方面帮助我。
如何等待硒Web驱动程序中的子窗口 当我点击提交按钮,它会把我带到子窗口,我断言URL,但有时子窗口需要时间来目前使用thread.sleep(4000),但这是错误的方式。