Python Selenium-使用动作链选择元素

时间:2018-08-27 18:32:53

标签: python selenium selenium-chromedriver

我有一个非常独特的目标,但是我很难让我的python代码正常工作。在大型硒应用程序中,我只是在尝试检查位于浏览器中特定位置的元素是否对应于一个元素。 例如,如果您查看测试网站:https://learn.letskodeit.com/p/practice 有一个标记为“打开标签”的元素(链接),其在浏览器中的坐标为: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的元素是否对应于我希望在该位置找到的元素。 / p>

0 个答案:

没有答案