首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用for loop Selenium Python将随机值发送到输入元素

使用for loop Selenium Python将随机值发送到输入元素
EN

Stack Overflow用户
提问于 2018-07-05 15:11:08
回答 2查看 939关注 0票数 0

所以我在测试一个计算器。我用webdriver输入一个数字,每个元素都有一个对应的文本值。我尝试将此值提供给xpath选择器。

我有一个随机数生成器。例如,我们有一个数字256。现在必须发送3次请求,然后是“2”,然后是“5”,然后是“6”。所以我的逻辑是从一个数字创建一个列表,并在每次发送一个对应于列表索引的值时遍历该列表。那就没什么好运气了。

代码语言:javascript
复制
    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表达式。我还尝试将其作为具有特定索引的元素发送

代码语言:javascript
复制
i = 0
("//input[@value={}]").format(two_digits[i])
i += 1

还没有弄清楚。那么我做错了什么呢?

EN

回答 2

Stack Overflow用户

发布于 2018-07-05 15:14:36

正如您所提供的,问题出在xPath中。//input[@value={}]不是有效的xPath。我想你想要像//input[@value='a']这样的东西。试试这个:

代码语言:javascript
复制
self.driver.find_element_by_xpath("//input[@value='" + str(a) + "']").click()

假设是a = 5,那么:

//input[@value= '5']是有效的xPath

PS:我不知道.format(a)是做什么的。请确保您需要此方法。

票数 0
EN

Stack Overflow用户

发布于 2018-07-06 03:51:57

这里是正确的解决方案。首先,必须从随机数创建一个列表,并遍历每个号码(就像电话上的推送拨号号码一样)

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51185284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档