我在循环代码中得到了这个python硒。
这是我的代码
strpoints = driver.find_element_by_class_name("fs18").text
points = slice(13, len(strpoints)-20)
actualpoints = strpoints[points]
d = 0
while (d + actualpoints <9):
# TASK A!!!
print(actualpoints + ' Points! Skipping.')
time.sleep(2)
driver.find_element_by_class_name('skip_button_single').click()
time.sleep(8)
if (d >= 10):
break
# TASK B!!!
print(actualpoints + ' Points! Go for it!')
问题:
上面的代码无法正常工作,因为变量actualpoints
是动态的。
如果实际点<9,它将执行分配的任务B 但不能强制,它返回相同的变量,并且永远不变。
任务A,重新加载页面并显示一个新数字,该数字应存储在名为actualpoints
的变量中。
与我的代码和变量有关的其他详细信息:
strpoints
。strpoints
后的结果。动态值。知道代码有什么问题吗?
答案 0 :(得分:1)
在下面的代码中,Profit YTD:=
CALCULATE (
[Profit],
CALCULATETABLE ( DATESYTD ( 'Date'[Date] ), 'Date'[DateWithProfit] = TRUE )
)
被time.sleep
替换,wait
被while
循环替换。每次迭代都会使for
使用更新后的值。用于从strpoints
中提取points
号的正则表达式。
strpoints
答案 1 :(得分:1)
我不确定这是否可以解决问题,但是也许您可以添加一个realpoints验证方法和变量来保存最后的realpoints值?
这是您的代码以及我所做的一些补充。如果我正确阅读了TASK A,则将您的初始流程重新整理为while循环,但是可以根据您的需要进行修改。
strpoints = driver.find_element_by_class_name("fs18").text
points = slice(13, len(strpoints)-20)
actualpoints = strpoints[points]
"""
Create a temporary variable equal to the initial actualpoints value
"""
old_actualpoints = actualpoints
d = 0
def validate_actualpoints():
"""
Simple value check query. Returns actual actualpoints value.
"""
if old_actualpoints != actualpoints:
old_actualpoints = actualpoints
return actualpoints
while old_actualpoints == actualpoints:
while (d + actualpoints < 9):
# TASK A!!!
print(actualpoints + ' Points! Skipping.')
time.sleep(2)
driver.find_element_by_class_name('skip_button_single').click()
""" Move the initial process into the while loop and re-run based on TASK A """
strpoints = driver.find_element_by_class_name("fs18").text
points = slice(13, len(strpoints)-20)
actualpoints = strpoints[points]
time.sleep(8)
if (d >= 10):
break
"""
Update our temporary variable here?
(Possibly not needed.)
"""
old_actualpoints = validate_actualpoints()
break
# TASK B!!!
print(actualpoints + ' Points! Go for it!')