selenium-python 点击坐标:"unsupported operand type(s) for +"

selenium-python click on coordinates: "unsupported operand type(s) for +"

我在 Robot Framework 上进行自动化测试,我需要点击地图上的坐标。

我写了这个:

def click_at_coordinates(pos_x, pos_y):
    actions = ActionChains(get_driver())
    my_map = get_driver().find_element_by_xpath("//div[@id='map']/div/div[4]/div")
    actions.move_to_element_with_offset(my_map, pos_x, pos_y).click().perform()
    get_driver().find_element_by_xpath("//button[@type='submit']").click()

并收到此错误消息:

TypeError: unsupported operand type(s) for +: 'float' and 'str'

谢谢!

如果需要:

def get_driver():
    sl = BuiltIn().get_library_instance("SeleniumLibrary")
    return sl.driver

谢谢大家的回答!

将您在方法中获得的参数转换为整数:

def click_at_coordinates(pos_x, pos_y):
    pos_x = int(pos_x)
    pos_y = int(pos_y)
    # the rest

,因为您很可能将一个作为字符串发送,另一个作为测试用例中的浮点数发送(根据异常消息判断)。

您还可以使用类型提示,Robot Framework 将尝试自动转换您调用的参数:

def click_at_coordinates(pos_x: int, pos_y:int ) -> None:

@Prophet 找到的答案: 问题出在机器人文件中

${X1}    Set Variable    ${{ random.randint(1, 50) }}
${Y1}    Set Variable    ${{ random.randint(1, 50) }}

${X2}    Set Variable    ${{ random.randint(1, 50) }}
${Y2}    Set Variable    ${{ random.randint(1, 50) }}

完美配合
${X1}    ${{ random.randint(1, 50) }}
${Y1}    ${{ random.randint(1, 50) }}

${X2}    ${{ random.randint(1, 50) }}
${Y2}    ${{ random.randint(1, 50) }}

感谢大家的回答和帮助!