import webbrowser
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.suntrust.com/')
browser.implicitly_wait(10)
elem = browser.find_element_by_xpath('//*[@id="sign-on-3A69E29D-79E0-403E-
9352-5261239ADD89-user"]')
elem.send_keys('your-username')
我有两个问题:
1) 窗口不会全屏打开,这意味着用户名字段在物理上不可见。如何在新选项卡而不是新窗口中打开 url。
2) 其他帖子表明该元素是由 JavaScript 伪造的,因此 webdriver 无法看到它。
我已经在所有其他定位器中尝试了 find_element_by
。
最佳答案
您的问题应该由您需要包含的一行简单代码来回答
browser.maximize_window()
将最大化您的窗口。另一种选择是设置特定的窗口大小,例如
driver.set_window_size(1280, 1024)
您可以使用两者来实现浏览器打开到最大尺寸。
我要说的另一点是,如果您是初学者,请尝试使用更多的 CSS Selectors
而不是 Xpath
。它们比 Xpath 的快得多。详见post关于什么是好的定位器的 SQA。
对于您的情况,登录字段的 CSS 选择器将是
driver.find_element_by_css_selector('input#sign-on-3A69E29D-79E0-403E-9352-5261239ADD89-user')
密码为
driver.find_element_by_css_selector('input#sign-on-3A69E29D-79E0-403E-9352-5261239ADD89-password')
对于登录按钮,它将是
driver.find_element_by_css_selector('button.suntrust-login-button')
请阅读有关 CSS 选择器的更多信息,并尝试在您的代码中更频繁地使用它们。
关于python Selenium 元素不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45038756/