python Selenium 元素不可见

标签 python selenium

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/

相关文章:

java - 从 JSP 页面运行 Selenium 测试

python - 类型错误 : 'FirefoxWebElement' object is not iterable

javascript - 有没有一种方法可以单击 Canvas 中的特定点/元素(使用 javascript、jquery 或 selenium)

Python - 函数内的静态变量

python - Scrapy MultiCSVItemPipeline 导出一些空项目

python - Selenium (Python)+ react

java - 随机(?)ElementNotVisibleException

python - 如何更新碰撞标准以检查 Sprite 是否重叠,而不仅仅是接触?

python - 列表列表更改意外地反射(reflect)在子列表中

python - 如何在pypy沙箱中导入numpy