小编Bha*_*nan的帖子

如何正确使用find_element_by_link_text()不引发NoSuchElementException?

我有这样的HTML代码:

<div class="links nopreview"><span><a class="csiAction"
href="/WebAccess/home.html#URL=centric://REFLECTION/INSTANCE/_CS_Data/null">Home</a></span>&nbsp;•&nbsp;<span><span><a class="csiAction"
href="/WebAccess/home.html#URL=centric://SITEADMIN/_CS_Site">Setup</a></span>&nbsp;•&nbsp;</span><span><a
title="Sign Out" class="csiAction csiActionLink">Sign Out</a></span></div>
Run Code Online (Sandbox Code Playgroud)

我想点击包含文字Home的链接.由于登录后出现此主页链接,我有一个这样的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import re

browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://myServer/WebAccess/login.html") # Load App page
elem = browser.find_element_by_name("LoginID") # Find the Login box
elem.send_keys("Administrator")
elem = browser.find_element_by_name("Password") # Find the Password box
elem.send_keys("Administrator" + Keys.RETURN)
#try:
elem = browser.find_element_by_link_text("Home")
elem.click()
Run Code Online (Sandbox Code Playgroud)

登录之前的部分效果很好.然而,最后一行是有问题的

elem = browser.find_element_by_link_text("Home")
Run Code Online (Sandbox Code Playgroud)

它会引发此NoSuchElementException,其中Home链接就在那里,您可以从HTML代码中看到.

raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: u'Unable to locate element: …
Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver

18
推荐指数
2
解决办法
5万
查看次数

Python - 写入XLS文件的最佳模块

我想读取一个文本文件,写入一个windows .xls文件即,创建一个.xls文件,然后对创建的.xls文件进行一些修改.我已经谷歌了解所有可用的软件包:

Win32 Com client
 --> xlrd (Only for Reading from xls files I guess)
|
 --> xlwt (only for writing into xls files)
PyExcelerator
Run Code Online (Sandbox Code Playgroud)

执行这些操作的最佳模块是什么?有什么建议?

python

17
推荐指数
1
解决办法
3万
查看次数

Selenium-Python客户端库 - 后台自动化

我正在尝试使用Selenium-Python客户端库自动登录我的Web应用程序.最终目标是学习Selenium的Python客户端库.所以,我真的很感谢那些进入Selenium-Python的人的答案.

我目前有这样的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://myServer/WebAccess/login.html") # Load Application page
elem = browser.find_element_by_name("LoginID") # Find the Login box
elem.send_keys("Administrator")
elem = browser.find_element_by_name("Password") # Find the Password box
elem.send_keys("Administrator" + Keys.RETURN)
Run Code Online (Sandbox Code Playgroud)

这很好用,但都发生在前端.我的意思是它实际上打开了一个Firefox,值中的键,点击提交等,这是预期的.

我只是想知道,有什么办法让这一切能够在后台发生吗?让我们说我不想监视脚本正在做什么.我只是想让它在后台运行.有没有办法实现这个目标?

编辑

下载PyVirtualDisplay并使用该命令将其安装在我的窗口中setup.py install.也安装了EasyProcess和Path模块.

现在我有一个像这样的示例代码

from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1024, 768))
display.start()
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.close()
display.stop()
Run Code Online (Sandbox Code Playgroud)

我在执行此代码时遇到以下错误:

`Traceback (most recent call last): …
Run Code Online (Sandbox Code Playgroud)

python selenium

6
推荐指数
1
解决办法
5954
查看次数

Python httplib2处理异常

我有这个非常简单的代码来检查网站是上升还是下降.

import httplib2
h = httplib2.Http()
response, content = h.request("http://www.folksdhhkjd.com")
if response.status == 200:
    print "Site is Up"
else:
    print "Site is down"
Run Code Online (Sandbox Code Playgroud)

当我输入有效的URL时,它会正确打印Site is Up,因为状态是预期的200.但是,当我输入无效的网址时,是否应该打印网站已关闭?相反,它会打印出类似这样的异常

Traceback (most recent call last):
  File "C:\Documents and Settings\kripya\Desktop\1.py", line 3, in <module>
    response, content = h.request("http://www.folksdhhkjd.com")
  File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1436, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1188, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1129, in …
Run Code Online (Sandbox Code Playgroud)

python httplib2

5
推荐指数
1
解决办法
9173
查看次数

提取 HTML 表单的字段名称 - Python

假设有一个链接“http://www.someHTMLPageWithTwoForms.com”,它基本上是一个具有两种表单(比如表单 1 和表单 2)的 HTML 页面。我有一个这样的代码......

import httplib2
from BeautifulSoup import BeautifulSoup, SoupStrainer
h = httplib2.Http('.cache')
response, content = h.request('http://www.someHTMLPageWithTwoForms.com')
for field in BeautifulSoup(content, parseOnlyThese=SoupStrainer('input')):
        if field.has_key('name'):
                print field['name']
Run Code Online (Sandbox Code Playgroud)

这将返回属于我的 HTML 页面的 Form 1 和 Form 2 的所有字段名称。有什么方法可以让我只获得属于特定表单的字段名称(仅说表单 2)?

python parsing

5
推荐指数
2
解决办法
1万
查看次数

什么比Python中的Mechanize更好?

我想提交一个表单,点击链接,选择一些复选框和单选按钮,然后点击我的Python程序中的按钮.我曾与Perl的Mechanize合作过.我检查了谷歌,我发现它也可用于Python

http://wwwsearch.sourceforge.net/mechanize/
Run Code Online (Sandbox Code Playgroud)

不幸的是,那个链接已经死了!那么,我在哪里可以获得一些Python Mechanize的教程以及从哪里可以下载它?如果没有机械化,你还会建议什么?

python mechanize

4
推荐指数
1
解决办法
8591
查看次数

在URL中传递变量 - PHP

假设我有这样的URL

http://subdomain.domain.com/folder1/abc?cat1=PTO2Cat2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&TEXT1=Value
Run Code Online (Sandbox Code Playgroud)

在此URL中,最后的TEXT1会针对各种页面进行更改.但价值不会改变.所以它会是这样的

对于第1页

http://subdomain.domain.com/folder1/abc?cat1=PTO2Cat2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&TEXT1=Value
Run Code Online (Sandbox Code Playgroud)

对于第2页

http://subdomain.domain.com/folder1/abc?cat1=PTO2Cat2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&TEXT2=Value
Run Code Online (Sandbox Code Playgroud)

对于Page n

http://subdomain.domain.com/folder1/abc?cat1=PTO2Cat2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&TEXTn=Value
Run Code Online (Sandbox Code Playgroud)

我该如何对其进行参数化?我试过这样的事

for ($i=1;$i<=n;$i++)
{
$url = sprintf('http://subdomain.domain.com/folder1/abc?cat1=PTO2Cat2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&TEXT%d=Value',$i)
echo $url;
}
Run Code Online (Sandbox Code Playgroud)

但它没有说Sprintf太少的论点.请问有什么建议吗?

php

3
推荐指数
1
解决办法
1304
查看次数

将两行合并为一行 - Notepad ++

我有这样一条线

assignee: Akebono Brake Industry Co. Ltd.  , 
 Fujitsu Limited  application_no: 06/946,825
Run Code Online (Sandbox Code Playgroud)

我想要输出

assignee: Akebono Brake Industry Co. Ltd.  , Fujitsu Limited  
application_no: 06/946,825
Run Code Online (Sandbox Code Playgroud)

要将application_no:06/946,825带到下一行,我可以在我的NOTEPAD ++中找到application_no:并将其替换为\napplication_no:

但是,如何将跨越下一行的字符串带回第一行?我的意思是我应该怎样做才能让富士通有限公司受让人开始:

有什么指导吗?

regex notepad++

3
推荐指数
1
解决办法
3万
查看次数

使用PowerShell脚本下载zip文件并解压缩

我需要一些帮助,以将我的想法整合到一个有效的代码中。

这就是我所拥有的:

第一步:我将FTP用户名和密码作为参数。

param(#define parameters
[Parameter(Position=0,Mandatory=$true)]
    [string]$FTPUser
[Parameter(Position=1,Mandatory=$true)]
    [string]$FTPPassword    
[Parameter(Position=2,Mandatory=$true)]
    [string]$Version    
)
Run Code Online (Sandbox Code Playgroud)

然后设置以下变量:

$FTPServer = "ftp.servername.com"
$SetType = "bin"
Run Code Online (Sandbox Code Playgroud)

现在,我想建立一个连接。我用Google搜索语法,发现了这一点。不确定是否会建立FTP连接。我还没有测试

$webclient = New-Object System.Net.WebClient 
    $webclient.Credentials = New-Object System.Net.NetworkCredential($FTPUser,$FTPPassword) 
Run Code Online (Sandbox Code Playgroud)

这是我不知道如何编码的部分:

$Version是我的输入参数之一。我在FTP中有一个zip文件,如下所示:

ftp.servername.com\builds\my builds\$Version\Client\Client.zip
Run Code Online (Sandbox Code Playgroud)

我想将该Client.zip下载到本地计算机的(从中运行脚本的)"C:\myApp\$Version"文件夹中。因此,FTP下载将为每次运行创建一个$version名为in 的新子文件夹C:\myApp

完成此操作后,我还需要知道如何将以下client.zip文件解压缩到 C:\myApp\$Version\Client\<content of the zip file will be here>

powershell zip powershell-2.0

3
推荐指数
2
解决办法
4934
查看次数

持续检查 VPN 连接 - Python

当 VPN 断开连接时,是否有任何有效的方法可以在日志文件或控制台上进行检查和报告?

import time
print time.asctime( time.localtime(time.time()) )
Run Code Online (Sandbox Code Playgroud)

可以打印时间,但我不知道递归查找 VPN 是否处于活动状态的代码是什么。稍后(1)对其进行 ping 操作来检查连接是否处于活动状态是一种愚蠢的方法。有什么办法可以实现这个目标吗?

python

2
推荐指数
1
解决办法
1万
查看次数

复合主键上的自动增量 - Sqlite3 + Python

我有这样的代码

c.execute('CREATE TABLE IF NOT EXISTS base (ID INTEGER NOT NULL, col2 TEXT NOT NULL, col3 INTEGER, PRIMARY KEY(ID, col2))')
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个sqlite3.IntegrityError异常,即使我非常确定我是第一次写这个记录.

所以,我试过了

c.execute('CREATE TABLE IF NOT EXISTS base (ID INTEGER, col2 TEXT, col3 INTEGER, PRIMARY KEY(ID, col2))')
Run Code Online (Sandbox Code Playgroud)

这会在表BUT中精细插入行,ID列根本不会自动递增.

我能做什么?任何的想法?

python sqlite

2
推荐指数
1
解决办法
3517
查看次数

Excel公式在最后两个逗号之间获取文本

我在单元格A1中有这些数据:

Majestic Properties Design District, LLC, Ste. 101, 35 NE 40TH ST, Miami, FL 33137
Run Code Online (Sandbox Code Playgroud)

还有一些具有这些格式的其他单元也可以解决,例如

Fortune International Realty Iriondo Ecker & Assoc. Inc., Ste 25, 260 Crandon Blvd, Key Biscayne, FL 33149
Run Code Online (Sandbox Code Playgroud)

我想要的输出是

Miami
Key Biscayne
Run Code Online (Sandbox Code Playgroud)

等等

为了得到Zip和State我做了

=RIGHT(A1,8)
Run Code Online (Sandbox Code Playgroud)

但是现在我需要得到这个城市(即最后两个逗号之间的文字).

我不想将TEXT用于COLUMN或任何VBA.我想用一个公式.

excel

1
推荐指数
1
解决办法
2万
查看次数