首页 > 解决方案 > Python selenium - 使用动作链选择一个元素

问题描述

我有一个非常独特的目标,我很难让我的 python 代码正常工作。在一个大型 selenium 应用程序中,我试图简单地检查位于浏览器中特定位置的元素是否对应于一个元素。例如,如果您查看测试网站:https ://learn.letskodeit.com/p/practice 有一个标记为“Open Tab”的元素(链接),其在浏览器上的坐标为:x = 588, y = 576 . 这是我用来确认在那个位置我有那个元素的代码:

target_elem = driver.find_element_by_id("opentab")
print("target elem actual location: {}".format(target_elem.location))
time.sleep(1)

zero_elem = driver.find_element_by_tag_name('body')
x_body_offset = zero_elem.location["x"]
y_body_offset = zero_elem.location["y"]
print("Body coordinates: {}, {}".format(x_body_offset, y_body_offset))

x = 588
y = 576

actions = ActionChains(driver)
actions.move_to_element_with_offset(driver.find_element_by_tag_name('body'), -x_body_offset, -y_body_offset).click()
actions.move_by_offset( x, y ).send_keys(Keys.ESCAPE).perform()

elem_found = driver.switch_to.active_element
print(elem_found.text)

当我打印 elem_found.text 时,我没有得到“打开选项卡”。但是,如果在动作链中,就在 perform() 之前,我添加 click(),上面的代码确实会单击“打开选项卡”链接。因此我的问题是:我们可以通过知道元素在浏览器中的确切位置来简单地选择元素吗?我完全理解按位置获取元素并不是获取元素的最佳方式,但就我而言,我确实需要能够确认位置 X、Y 中的元素是否对应于我希望在该位置找到的东西。

标签: pythonseleniumselenium-chromedriver

解决方案


推荐阅读