为变量分配两个值

时间:2019-04-28 23:08:28

标签: python selenium

我将尽力解释这一点,而不会给出太多关于我要做什么的细节。

我有一个网站Website1,其产品x的值为1 我有另一个网站Website2,其产品x的产品价值为2。

乘积“ x”具有两个需要配对的值。使用元组会发生这种情况吗?

x = [1, 2]

Website2上,我需要循环检查一个订单项列表。当它在元组中找到产品x并与来自Website1的连接值2相匹配时,我需要执行一个函数来更改实现值,然后移至下一个订单项以执行下次检查。这是我到目前为止的内容,我甚至不确定逻辑是否接近。

x = [1, 2]

if Website1 == x:
LineItem.find_element_by_xpath('./td[4]/div/div/input').clear()
time.sleep(2)
LineItem.find_element_by_xpath('./td[4]/div/div/input').send_keys("1")

else:
LineItem.find_element_by_xpath('./td[4]/div/div/input').clear()
time.sleep(2)
LineItem.find_element_by_xpath('./td[4]/div/div/input').send_keys("0")

4 个答案:

答案 0 :(得分:2)

是的,您可以轻松地使用元组为变量分配两个值(整个元组都被分配给变量):

x = (val1, val2)
x[0] == val1  # True
x[1] == val2  # True

旁注: []定义一个列表,而不是一个元组。后者是前者的不变变体

答案 1 :(得分:0)

您应该使用元组。

x = (1, 2)

只需从元组中获取值,即可:

x[0]获取第一个值,x[1]获取下一个值,依此类推。

答案 2 :(得分:0)

myValues = (a, b, c)

这将创建一个元组,您可以在其中存储多个值。 要获取不同的值,例如,使用myValues[0]获取第一个元素。

答案 3 :(得分:-1)

您可以使用元组,但不必这样做。这只是做到这一点的一种方法。您在[]中所拥有的是一个数组。您也可以使用它,如果您添加了Third +网站,则无需更改数据结构,只需添加一个新值,例如x = [1, 2, 3],因此拥有数组使得与元组相比更容易在以后扩展。

现在输入代码。在没有更多解释的情况下很难理解您的逻辑,但这应该可以解决您的问题(并简化您的代码)。

您将注意到ifelse块基本上具有相同的代码。唯一的区别是send_keys()中的“ 1”与“ 0”。您应该阅读Rails: update_column works, but not update_attributes和DRY练习,但核心概念是“不要重复自己”。将重复的行拉出到名为set_fulfillment_value()的方法中(您可能想给它一个更合适的名称)。

def set_fulfillment_value(value)
    LineItem.find_element_by_xpath('./td[4]/div/div/input').clear()
    # time.sleep(2) # this is a bad practice and should be removed (it likely isn't needed here anyway)
    LineItem.find_element_by_xpath('./td[4]/div/div/input').send_keys(value)

使用if设置要发送的值,然后将其传递给方法。

x = [1, 2]
value = None
if Website1 == x[0]:
    value = "1"
else:
    value = "0"
set_fulfillment_value(value)

注意:我知道命名很困难,但是您应该使用更好的变量名。 Website1听起来更像是product之类的名字?另外,LineItem也不是python-y。 line_item可能会更好。