也许你在现场测试中遇到了类似的问题...
在执行测试期间,我从控制台中获取信息,该元素无法滚动到视图中。我发现可能使用java脚本执行器是解决方案。这是一个下拉列表。
有2个onclicks,指的是2个动作阶段,所有这些都包含动态数字:
ITypedFactoryComponentSelector
因此,如果我想使用它,我可能必须将动态id作为参数引用:
onclick="selector('phone_dynamicnumberlike98046454')" - general
onclick="pick('phone_dynamicnumberlike454674645',event)" - choose the type from dropdown
现在我使用starts-with引用动态id并包含:
driver.execute_script(selector(dynamic id?);)
在下一行中,我用xpath和值来表示电话的类型。
如何使用javascript executor正确替换这行代码?我的意思是什么是python中的最佳实践,selenium?
答案 0 :(得分:0)
为什么不使用scroll-to-view方法而不是JS executor?
from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_element_by_xpath("(//*[starts-with(@id, 'phone') and
contains(@id, 'dropdown')])")
actions = ActionChains(driver)
actions.move_to_element(element).perform()
答案 1 :(得分:0)
您是否尝试使用getBoundingClientRect()
和scrollTo()
element = driver.find_element_by_xpath("(//*[starts-with(@id, 'phone') and contains(@id, 'dropdown')])")
driver.execute_script("coordinates = arguments[0].getBoundingClientRect();scrollTo(coordinates.x,coordinates.y);", element)
同样令您感到困惑的是因为当您在同一元素上有两个onclick
属性时,它们都会被click()
触发。