当前位置: 首页 > 知识库问答 >
问题:

使用硒网络驱动程序导航网站

马欣荣
2023-03-14

我的目标是使用硒为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/

共有3个答案

从景曜
2023-03-14

尝试使用

click_link=driver.find_element_by_xpath(例如“在线账单支付”链接)

click_link点击()

柳浩大
2023-03-14

文档通常技术性太强,我无法理解,但对于硒Python绑定来说非常简单。

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

留档示例:

continue_link = driver.find_element_by_partial_link_text('Conti')
昌栋
2023-03-14

您遇到的错误是您要查找的元素不在页面中。根据我对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),但这是错误的方式。