【问题标题】:Initialising a Webdriver UserAgent in chrome does not seem to emulate an iPhone在 chrome 中初始化 Webdriver UserAgent 似乎无法模拟 iPhone
【发布时间】:2013-08-10 05:10:35
【问题描述】:

当我在 Chrome 或 Firefox 中使用 UserAgent ruby​​ gem (webdriver-user-agent) 将我的驱动程序设置为作为 iPhone 运行时,屏幕不会像我在 Chrome/Firefox 和所有屏幕上的(移动)元素不可见。

这个用户代理是为 selenium 工作还是只为 watir 工作?如果是这样,我能做些什么来完成这项工作吗?代码如下:

when 'iphone'

@driver = Webdriver::UserAgent.driver(:browser => :chrome, :agent => :iphone, :orientation => :portrait)

【问题讨论】:

    标签: ruby google-chrome cucumber selenium-webdriver user-agent


    【解决方案1】:

    Selenium 应该可以搞定,不需要使用第三方 gem。

    我之前回答了一个C#版本,可以找到here。

    这是 Ruby 版本:

    火狐

    profile = Selenium::WebDriver::Firefox::Profile.new
    profile['general.useragent.override'] = 'YOUR_UA_STRING'
    
    driver = Selenium::WebDriver.for :firefox, :profile => profile
    

    铬

    driver = Selenium::WebDriver.for :chrome, :switches => %w[--user-agent=YOUR_UA_STRING]
    

    请记住对字符串数组中的空格进行转义,例如:

    driver = Selenium::WebDriver.for :chrome, :switches => %w[--user-agent=Mozilla/5.0\ (iPhone;\ CPU\ iPhone\ OS\ 5_0\ like\ Mac\ OS\ X)\ AppleWebKit/534.46\ (KHTML,\ like\ Gecko)\ Version/5.1\ Mobile/9A334\ Safari/7534.48.3]
    

    PhantomJS

    capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs('phantomjs.page.settings.userAgent' => 'YOUR_UA_STRING')
    driver = Selenium::WebDriver.for :phantomjs, :desired_capabilities => capabilities
    

    IE

    Selenium 原生不可用

    【讨论】:

    • 好的,所以我似乎有这个工作(见下面的代码),但它仍然没有显示它应该用于移动设备的元素,并且当您手动设置相同的用户代理时 chrome 会显示当'iphone'@driver = Selenium::WebDriver.for :chrome, :switches => %w[--user-agent='Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3']
    • @user2664501:您需要转义字符串数组中的空格。 driver = Selenium::WebDriver.for :chrome, :switches => %w[--user-agent=Mozilla/5.0\ (iPhone;\ CPU\ iPhone\ OS\ 5_0\ like\ Mac\ OS\ X)\ AppleWebKit/534.46\ (KHTML,\ like\ Gecko)\ Version/5.1\ Mobile/9A334\ Safari/7534.48.3]
    • 嗨 - 我完全按照指定尝试了这个,但它仍然不起作用。通过 selenium 运行时,它仍然显示桌面版本,但是,当在 Chrome 中手动覆盖用户代理(使用 iPhone 5)时,它会按预期显示移动版本。
    • 添加了一个类似的 Android 版本,结果类似(并且在 selenium 浏览器上打开了多个选项卡)driver = Selenium::WebDriver.for :chrome, :switches => %w[--user-agent=Mozilla/5.0\ (Linux;\ U\ Android 4.0.2\ en-us\ Galaxy Nexus Build/ICL53F)\ AppleWebKit/534.30\ (KHTML,\ like\ Gecko)\ Version/4.0\ Mobile Safari/534.30]
    • @user2664501:使用 Selenium 打开的浏览器,转到 whatsmyuseragent.com 看看会出现什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多