繁体   English   中英

selenium-python 点击坐标:“+ 不支持的操作数类型”

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

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

我写了这个:

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

感谢您的所有回答!

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

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

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

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

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) }}

谢谢大家的回答和帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM