我可以滚动窗口,但是有什么方法可以滚动窗口中存在的某些特定元素(如网格)?网格也有类似于窗口的滚动条,如下图所示
我找到了这个解决方案。
Execute Javascript | window.document.getElementById("your id goes here").scrollIntoView(true);
Run Code Online (Sandbox Code Playgroud)
但不幸的是,在我的情况下,没有为我想要滚动的特定元素(网格)定义“id”。有没有其他解决办法,我尝试了很多,但还没有成功。
假设我有这两个鼻子测试ExampleTest1.py和ExampleTest2.py
ExampleTest1.py
class ExampleTest1(TestBase):
"""
"""
def testExampleTest1(self):
-----
-----
if __name__ == "__main__":
import nose
nose.run()
---------------
ExampleTest2.py
class ExampleTest2(TestBase):
"""
"""
def testExampleTest2(self):
-----
-----
if __name__ == "__main__":
import nose
nose.run()
Run Code Online (Sandbox Code Playgroud)
现在,我想从一个套件中运行数百个测试文件。
我正在寻找类似TestNG功能的东西,例如testng.xml,在这里我可以添加所有应该逐个运行的测试文件
<suite name="Suite1">
<test name="ExampleTest1">
<classes>
<class name="ExampleTest1" />
</classes>
</test>
<test name="ExampleTest2">
<classes>
<class name="ExampleTest2" />
</classes>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
如果python中没有testng.xml之类的功能,那么还有什么其他方法可以创建测试套件并在其中包含我所有的python测试呢?谢谢
打开应用程序URL后,用户将被重定向到登录页面,其中有一个登录按钮.
driver.get("abc.com")
Run Code Online (Sandbox Code Playgroud)
现在,当用户单击"登录"按钮时,URL在同一窗口中更改,表示它变为xyz.com,并显示用于登录目的的身份验证弹出窗口,类似于下图所示的图像.
要在身份验证窗口中输入用户名和密码,我尝试了以下代码
shell = win32com.client.Dispatch("WScript.Shell")
shell.Sendkeys("username")
time.sleep(1)
shell.Sendkeys("{TAB}")
time.sleep(1)
shell.Sendkeys("password")
time.sleep(1)
shell.Sendkeys("{ENTER}")
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
它没用.然后我尝试使用上面的代码直接打开Windows身份验证弹出窗口(通过点击登录按钮后复制URL),它工作正常
driver.get("xyz.com")//instead of abc.com my application URL
Run Code Online (Sandbox Code Playgroud)
我有点困惑.如果我打开我的应用程序URL abc.com,单击登录按钮,使用autoit,它没有输入凭据.但是,如果我直接发送窗口身份验证URL xyz.com而不是app URL abc.com并使用autoit,它就可以工作.
任何人都可以建议我在这里缺少什么?我也尝试在点击登录按钮后切换窗口,考虑其新的URL然后自动命令,但它仍然无法正常工作.
driver.switch_to_window(driver.window_handles[1])
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
注意:我注意到点击登录按钮,窗口无限加载,光标在Windows身份验证poup的用户名文本字段上处于活动状态.此外,一旦出现Windows身份验证窗口,selenium命令都不起作用,也没有自动命令.
我尝试了以下代码,但它对我不起作用
from selenium import webdriver
driver=webdriver.Chrome('D:/BrowsersDriver/chromedriver.exe')
driver.get('https://username:password@www.engprod-charter.net/')
Run Code Online (Sandbox Code Playgroud)
后来我尝试在Java中使用相同的方法
driver.get(' https:// username:password@www.engprod-charter.net/ ')
但不幸的是,它在任何浏览器中都不适用于我.我在这里错过了什么吗?
然后我尝试用Java中的AutoIT
Runtime.getRuntime().exec("D:\\FirefoxWindowAuthentication.exe");
driver.get("https://www.engprod-charter.net/")
Run Code Online (Sandbox Code Playgroud)
它在Firefox和IE中运行良好,但不适用于Chrome.有没有办法,至少我可以使用python在selenium中实现这一点,以及在Java的情况下我缺少的东西.请建议我任何解决方案,尝试了很多
<a href="javascript:void(0)" title="home">
<span class="menu_icon">Maybe more text here</span>
Home
</a>
Run Code Online (Sandbox Code Playgroud)
因此,对于上面的代码,当我编写//a
为XPath时,它会突出显示,但是当我编写时//a[contains(text(), 'Home')]
,它不会被突出显示。我认为这很简单,应该有效。
我的错在哪里
我编写了类似于以下代码的代码来实现我的要求,但我收到错误消息。
class Test(BaseSetup):
def test_01_create_record(self):
--
def test_02_edit_record(self):
--
def test_03_delete_record(self):
--
def test_04_verify_item_tab(self):
testObj=Test()
testObj.test_01_create_record()
do this....
testObj.test_03_delete_record()
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
这里以上三个测试方法(test_01、test_02 和 test_03)都运行良好,但最后一个测试,即 test_04 失败。它无法使用 test_01 创建记录(尽管它单独工作得很好)。我在上次测试中收到以下错误消息。
self.driver.find_element_by_xpath(self.content_tab_xpath).click()
AttributeError: 'NoneType' object has no attribute 'find_element_by_xpath'
Run Code Online (Sandbox Code Playgroud)
上面的错误消息是针对第一个测试(test_01_create_record)的,只有当我从另一个测试中调用第一个测试方法时,我才会收到错误消息,但是当我单独运行它时,它运行良好。知道我可能会错过什么吗?非常感谢
el = driver.find_elements_by_xpath("//div[contains(@class,'statsprogramsgridmodal')]//div[contains(@class,'ui-grid-icon-ok')]")
Run Code Online (Sandbox Code Playgroud)
我已经在 xpath 上面写了找到 web 元素。它给了我三个结果。我想点击第二个网页元素。你能告诉我如何在 python selenium 中完成吗?
我正在尝试使用下面的代码将控件置于页面右下角,但在我的情况下它不起作用。
Execute JavaScript | window.scrollTo(900,-900);
Run Code Online (Sandbox Code Playgroud)
我也尝试了其他坐标,但仍然没有成功。还有其他方法可以实现这一目标吗?