如何在WebDriverWait selenium模块的element_to_be_clickable中传递变量?

时间:2017-12-14 12:02:15

标签: python selenium selenium-webdriver parameter-passing

我有一个关于如何在element_to_be_clickable中传递字符串作为变量

的问题

我会参数化字符串"输入[class =' loginTextEntry'] [id =' user']"在名为InputVar的变量中,并将其传递给WebDriverWait的element_to_be_clickable

例如,python脚本中的以下(工作正常)指令

WebDriverWait(driver, explicit_TO).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[class='loginTextEntry'][id='user']"))).send_keys(userinfo[0])

我会把它编码为:

InputVar = "input[class='loginTextEntry'][id='user']"
WebDriverWait(driver, explicit_TO).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 
InputVar))).send_keys(userinfo[0])

但是没有工作

我尝试了其他一些尝试:

InputVar = "\"input[class=\'loginTextEntry\'][id=\'user\']\""

WebDriverWait(driver, explicit_TO).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 
InputVar))).send_keys(userinfo[0])
InputVar = "input[class=\'loginTextEntry\'][id=\'user\']"

WebDriverWait(driver, explicit_TO).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 
\" + InputVar +\" ))).send_keys(userinfo[0])

但我没有找到任何解决方案。 我怎么能编码呢?这对我很重要,因为InputVar可以指向不同的情况,我会自动化

2 个答案:

答案 0 :(得分:0)

参数化整个字符串 "input[class='loginTextEntry'][id='user']" 会很麻烦。相反,我建议写一个function(),它将变量 myUser 作为输入参数,如下所示:

 def test_me(myUser):
        WebDriverWait(driver, explicit_TO).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[class='loginTextEntry'][id='" + myUser + "']"))).send_keys(userinfo[0])

答案 1 :(得分:0)

已解决: 编辑文件中有些东西很脏 因为我在外部文件中输入了值为:

的变量

InputVar =输入[类=' loginTextEntry'] [ID ='用户']

所以我用一个简单的读者上传了这个变量 我用python代码执行了指令:

WebDriverWait(driver,explicit_TO).until(EC.element_to_be_clickable((By.CSS_SELECTOR, InputVar)))。send_keys(用户信息[0])

工作正常。