所以我在测试一个计算器。我用webdriver输入一个数字,每个元素都有一个对应的文本值。我尝试将此值提供给xpath选择器。
我有一个随机数生成器。例如,我们有一个数字256。现在必须发送3次请求,然后是“2”,然后是“5”,然后是“6”。所以我的逻辑是从一个数字创建一个列表,并在每次发送一个对应于列表索引的值时遍历该列表。那就没什么好运气了。
def test_something(self):
a = randint(0,9999)
two_digits = map(int, str(a))
def sum_list(a):
for x in two_digits:
a=x
self.driver.find_element_by_xpath("//input[@value={}]").format(a).click()
sum_list(two_digits)
所以我尝试了几个选项,尝试将x值发送到字符串。返回的不是有效的XPath表达式。我还尝试将其作为具有特定索引的元素发送
i = 0
("//input[@value={}]").format(two_digits[i])
i += 1
还没有弄清楚。那么我做错了什么呢?
发布于 2018-07-05 15:14:36
正如您所提供的,问题出在xPath中。//input[@value={}]
不是有效的xPath。我想你想要像//input[@value='a']
这样的东西。试试这个:
self.driver.find_element_by_xpath("//input[@value='" + str(a) + "']").click()
假设是a = 5
,那么:
//input[@value= '5']
是有效的xPath
PS:我不知道.format(a)
是做什么的。请确保您需要此方法。
发布于 2018-07-06 03:51:57
这里是正确的解决方案。首先,必须从随机数创建一个列表,并遍历每个号码(就像电话上的推送拨号号码一样)
a = randint(0,99999)
# Put in a list random number for exaple 124 will be [1,2,4]
list = [int(d) for d in str(a)]
# Go through the list where number of iterations is equal to number of elements
# Each iteration send value of this element to xpath
for item in list:
self.driver.find_element_by_xpath("//input[@value={0}]".format(item)).click()
https://stackoverflow.com/questions/51185284
复制相似问题