我正在尝试使用selenium和python将web元素的文本内容设置为字符串。
代码:
monthRow-7
有效,但我希望能够将monthname = browser.find_element_by_xpath(("\"//*[@id='monthRow-") + monthnum + ("']/td[1]\"")).text
更改为包含不同的数字。
我的想法是询问用户一个月(1-12),他们输入的内容存储在名为monthnum的字符串中。然后我可以将字符串monthnum连接到xpath以更改monthRow的数量。防爆。当提示输入月份编号时,用户输入9,因此monthRow-7更改为monthRow-9。
我试过了:
monthnum
其中var app = angular.module('StarterApp', []);
app.controller("repeatCtrl", ['$scope', function($scope) {
$scope.clients = [
{
"id": "2013-W45",
"clients": [
{
"id": "1",
"phone": "454-45686",
"clientName": "Client1",
"address": "ExampleAddress",
"ZIP": 24971,
"jobs": [
{
"name": "ClientName",
"jobs": [
{
"name": "someproject",
}
]
},
{
"name": "work 9-5",
}
]
},
]
},
{
"id": "22432",
"clientInfo": [
{
"dow": "1",
"clientName": "Client2",
"jobs": [
{
"name": "JobName",
"jobs": [
{
"name": "someProjetName",
}
]
},
{
"name": "work 9-5",
}
]
},
]
}
]
}]);
是由用户输入设置的字符串。
但是这给了我一个错误:
“消息:无效的选择器:由于以下错误,无法找到具有xpath表达式”// * [@ id ='monthRow-7'] / td [1]“的元素: TypeError:无法在'Document'上执行'evaluate':结果不是节点集,因此无法转换为所需的类型。“
错误中列出的xpath表达式与我在代码中实际工作的xpath表达式相同。有什么方法可以通过将变量分配给变量来改变xpath吗?
答案 0 :(得分:0)
我会使用string formatting。
monthnum = 7
monthname = browser.find_element_by_xpath("//*[@id='monthRow-{}']/td[1]".format(monthnum)).text
此处{}
将替换为monthnum
的值。
我不太确定你在尝试什么,但我认为你的解决方案应该是这样的:
monthname = browser.find_element_by_xpath("//*[@id='monthRow-" + monthnum + "']/td[1]").text
所有这些圆括号和额外的引号都是不必要的。